copysign, copysignf, copysignl
来自cppreference.com
定义于头文件 <math.h>
|
||
float copysignf( float x, float y ); |
(1) | (C99 起) |
double copysign( double x, double y ); |
(2) | (C99 起) |
long double copysignl( long double x, long double y ); |
(3) | (C99 起) |
定义于头文件 <tgmath.h>
|
||
#define copysign(x, y) |
(4) | (C99 起) |
1-3) 以
x
的绝对值和 y
的符号合成浮点值。4) 泛型宏:若任何参数拥有 long double 类型,则调用
copysignl
。否则,若任何参数拥有整数类型或 double 类型,则调用 copysign
。否则,调用 copysignf
。参数
x, y | - | 浮点值 |
返回值
若不出现错误,则返回拥有 x
的绝对值和 y
的符号的浮点值。
若 x
为 NaN ,则返回拥有 y
的符号的 NaN 。
若 y
为 -0 ,则仅若实现支持与算术运算一致的有符号零,结果才为负。
错误处理
此函数不受制于任何指定于 math_errhandling 的错误。
若实现支持 IEEE 浮点算术( IEC 60559 ),则
- 返回值是准确的(决不引发 FE_INEXACT ),且与当前舍入模式独立。
注意
copysign
是操纵 NaN 值符号的唯一可移植方式(为检验 NaN 的符号,亦可用 signbit )。
示例
运行此代码
可能的输出:
copysign(1.0,+2.0) = +1.0 copysign(1.0,-2.0) = -1.0 copysign(INFINITY,-2.0) = -inf copysign(NAN,-2.0) = -nan
引用
- C11 标准(ISO/IEC 9899:2011):
- 7.12.11.1 The copysign functions (p: 255)
- 7.25 Type-generic math <tgmath.h> (p: 373-375)
- F.10.8.1 The copysign functions (p: 529)
- C99 标准(ISO/IEC 9899:1999):
- 7.12.11.1 The copysign functions (p: 236)
- 7.22 Type-generic math <tgmath.h> (p: 335-337)
- F.9.8.1 The copysign functions (p: 465)
参阅
(C99)(C99) |
计算浮点值的绝对值( |x| ) (函数) |
(C99) |
检查给定数是不是负数 (宏函数) |