gpt4 book ai didi

c++ - 为什么这个 double 到 int 的转换不起作用?

转载 作者:可可西里 更新时间:2023-11-01 16:27:53 26 4
gpt4 key购买 nike

我一直在彻底寻找一个正确的解释来解释为什么会发生这种情况,但仍然不太明白,所以如果这是转贴,我深表歉意。

#include <iostream>
int main()
{
double x = 4.10;
double j = x * 100;

int k = (int) j;

std::cout << k;
}

Output: 409

我似乎无法用任何其他数字复制此行为。也就是说,用该形式的任何其他数字替换 4.10,输出是正确的。

一定有某种我不理解的低级转换内容。

谢谢!

最佳答案

4.1 不能用 double 精确表示,它可以用更小的东西来近似:

double x = 4.10;
printf("%.16f\n", x); // Displays 4.0999999999999996

因此 j 将比 410 稍小(即 409.99...)。转换为 int 会丢弃小数部分,因此您会得到 409。

(如果您想要另一个表现出类似行为的数字,您可以尝试 8.2、16.4 或 32.8...看到模式了吗?)

必填链接:What Every Computer Scientist Should Know About Floating-Point Arithmetic .

关于c++ - 为什么这个 double 到 int 的转换不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5852815/

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