gpt4 book ai didi

c++ - 在 C++ 中将 double 类型转换为 long 会返回不正确的值?

转载 作者:太空宇宙 更新时间:2023-11-03 10:29:50 26 4
gpt4 key购买 nike

抱歉,如果我的问题太基础了。但是有人可以解释我以下行为的原因吗?

int main () {

double a =1.16;
cout<<(a*100); //returning 116
cout<<(long)(a*100); //returning 115
return 0;
}

为什么第一个 cout 返回 116 而第二个返回 115?

请解释

最佳答案

将 float 转换为整数类型会导致小数部分被截断。只保留完整的部分。因此,如果您将 115.9999999 作为 float ,它将转换为整数 115。

现在,1.16 * 100 不会在 IEEE754 floating point 中产生 116.0 ,而是一个比 116 略小的数字,即整数部分等于 115 且小数部分非常接近 1 >。所以你剩下 115

关于c++ - 在 C++ 中将 double 类型转换为 long 会返回不正确的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20074680/

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