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
引用
- C23 标准(ISO/IEC 9899:2024):
- 7.12.11.1 The copysign functions (第 TBD 页)
- 7.25 Type-generic math <tgmath.h> (第 TBD 页)
- F.10.8.1 The copysign functions (第 TBD 页)
- C17 标准(ISO/IEC 9899:2018):
- 7.12.11.1 The copysign functions (第 TBD 页)
- 7.25 Type-generic math <tgmath.h> (第 TBD 页)
- F.10.8.1 The copysign functions (第 TBD 页)
- C11 标准(ISO/IEC 9899:2011):
- 7.12.11.1 The copysign functions (第 255 页)
- 7.25 Type-generic math <tgmath.h> (第 373-375 页)
- F.10.8.1 The copysign functions (第 529 页)
- C99 标准(ISO/IEC 9899:1999):
- 7.12.11.1 The copysign functions (第 236 页)
- 7.22 Type-generic math <tgmath.h> (第 335-337 页)
- F.9.8.1 The copysign functions (第 465 页)
参阅
(C99)(C99) |
计算浮点值的绝对值(|x|) (函数) |
(C99) |
检查给定数是不是负数 (宏函数) |