gpt4 book ai didi

C++:如何将 double 舍入为 int?

转载 作者:IT老高 更新时间:2023-10-28 11:59:47 25 4
gpt4 key购买 nike

我有一个 double(称为 x),本来是 55,但实际上存储为 54.999999999999943157,这是我刚刚意识到的。

所以当我这样做时

double x = 54.999999999999943157;
int y = (int) x;

y = 54 而不是 55!

这让我困惑了很久。我怎样才能让它正确地四舍五入?

最佳答案

在转换前加 0.5(如果 x > 0)或减去 0.5(如果 x < 0),因为编译器总是会截断。

float x = 55; // stored as 54.999999...
x = x + 0.5 - (x<0); // x is now 55.499999...
int y = (int)x; // truncated to 55

C++11 还引入了std::round ,这可能使用了将 0.5 添加到 |x| 的类似逻辑在引擎盖下(如果有兴趣,请参阅链接),但显然更强大。

一个后续问题可能是为什么 float 没有准确存储为 55。有关解释,请参阅 this堆栈溢出答案。

关于C++:如何将 double 舍入为 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9695329/

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