copysignl
copysign, copysignf, copysignl
在头文件 | | |
---|---|---|
float copysignf( float x, float y | (1) | (since C99) |
double copysign( double x, double y | (2) | (since C99) |
long double copysignl( long double x, long double y | (3) | (since C99) |
Defined in header <tgmath.h> | | |
#define copysign(from, to) | (7) | (since C99) |
1-3)组成一个浮点值,其大小x
和符号为y
。
4)类型 - 通用宏:如果任何参数具有类型long double
,copysignl
则被调用。否则,如果任何参数具有整数类型或具有类型double
,copysign
则被调用。否则,copysignf
被调用。
Parameters
x,y | - | 浮点值 |
---|
返回值
如果没有错误发生,则返回大小为x
和的符号的浮点值y
。
如果x
是NaN,则y
返回带有符号的NaN 。
如果y
是-0,则在算术运算中实现一致地支持有符号零时,结果仅为负值。
错误处理
此函数不受在math_errhandling中指定的任何错误的影响。
如果实现支持IEEE浮点运算(IEC 60559),
- 返回的值是精确的(
FE_INEXACT
永远不会被提升)并且独立于当前的舍入模式。
笔记
copysign
是操纵NaN值的符号的唯一便携式方法(检查NaN的符号,signbit
也可以使用)。
例
#include <stdio.h>
#include <math.h>
int main(void)
{
printf("copysign(1.0,+2.0) = %+.1f\n", copysign(1.0,+2.0)
printf("copysign(1.0,-2.0) = %+.1f\n", copysign(1.0,-2.0)
printf("copysign(INFINITY,-2.0) = %f\n", copysign(INFINITY,-2.0)
printf("copysign(NAN,-2.0) = %f\n", copysign(NAN,-2.0)
}
可能的输出:
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):