C++11标准模板(STL)- 常用数学函数 - 浮点数操作函数 - 从一个给定值的绝对值和另一个给定值的符号产生值(std::copysign, std::copysignf, copysignl)

常用数学函数

从一个给定值的绝对值和另一个给定值的符号产生值

std::copysign, 
std::copysignf, 
std::copysignl

定义于头文件 <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 )。

调用示例

#include <iostream>
#include <cstdlib>
#include <typeinfo>
#include <cinttypes>
#include <cmath>
#include <math.h>
#include <tgmath.h>

int main()
{
    //1-3) 以 x 的绝对值和 y 的符号合成浮点值。
    const float fNumber = std::acos(-1);
    std::cout << "typeid(float).name():   " << typeid(float).name() << std::endl;
    for 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值