std::copysign
来自cppreference.com
| 定义于头文件 <cmath>
|
||
| float copysign( float x, float y ); |
(1) | (C++11 起) |
| double copysign( double x, double y ); |
(2) | (C++11 起) |
| long double copysign( long double x, long double y ); |
(3) | (C++11 起) |
| Promoted copysign( Arithmetic1 x, Arithmetic2 y ); |
(4) | (C++11 起) |
1-3) 以
x 的模和 y 的符号组成浮点值。 4) 一组重载或函数模板,用于所有 (1-3) 所不覆盖的算术类型参数组合。若任何参数拥有整数类型,则它被转型到 double 。若任何参数为 long double ,则返回类型
Promoted 亦为 long double , 否则返回类型始终是 double 。目录 |
[编辑] 参数
| x, y | - | 浮点值 |
[编辑] 返回值
若无错误发生,则返回以 x 的模与 y 的符号组成的浮点值。
若 x 为 NaN ,则返回带 y 符号的 NaN 。
若 y 为 -0 ,则仅若实现支持与算术运算一致的有符号零,结果才为负。
[编辑] 错误处理
此函数不受制于任何指定于 math_errhandling 的错误
若实现支持 IEEE 浮点算术( IEC 60559 ),则
- The returned value is exact (FE_INEXACT is never raised) and independent of the current rounding mode.
[编辑] 注意
std::copysign 是操作 NaN 值符号的仅有的可移植方式( signbit 亦可用于检验 NaN 的符号)
[编辑] 示例
运行此代码
#include <iostream> #include <cmath> int main(void) { std::cout << "copysign(1.0,+2.0) = " << std::copysign(1.0,+2.0) << '\n' << "copysign(1.0,-2.0) = " << std::copysign(1.0,-2.0) << '\n' << "copysign(inf,-2.0) = " << std::copysign(INFINITY,-2.0) << '\n' << "copysign(NaN,-2.0) = " << std::copysign(NAN,-2.0) << '\n'; }
输出:
copysign(1.0,+2.0) = 1 copysign(1.0,-2.0) = -1 copysign(inf,-2.0) = -inf copysign(NaN,-2.0) = -nan
[编辑] 参阅
| 计算浮点数的绝对值(|x|) (函数) | |
| (C++11) |
(函数) |
| copysign的 C 文档
|

