gpt4 book ai didi

c++ - C++11 中的 std::nearbyint 与 std::round

转载 作者:可可西里 更新时间:2023-11-01 14:56:36 32 4
gpt4 key购买 nike

C++11 引入了 std::nearbyintstd::round功能。两者都返回“最接近的”整数值。

我应该在何时何地更喜欢其中一个?

我用 0.5 的值测试了它们:

案例 1:Demo for nearbyint

#include <iostream>
#include <cmath>

int main()
{
std::cout<<"nearbyint(0.5) = "<<std::nearbyint(0.5);
}

输出: 0

案例 2: Demo for round

#include <iostream>
#include <cmath>

int main()
{
std::cout<<"round(0.5) = "<<std::round(0.5);
}

输出: 1

为什么输出不同?

最佳答案

std::round 函数忽略 current rounding modestd::nearbyint 将其考虑在内。您可以更改舍入模式:

#include <cfenv>
int main() {
std::fesetround(FE_UPWARD);
// perform calculations
std::fesetround(FE_DOWNWARD);
// perform calculations
// other rounding methods...
}

并观察不同的结果。要获取当前舍入模式值,请使用 std::fegetround()功能。默认(实现定义)值可能是 0,它转换为 FE_TONEAREST

关于c++ - C++11 中的 std::nearbyint 与 std::round,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47156806/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com