gpt4 book ai didi

java - 精度损失

转载 作者:行者123 更新时间:2023-11-29 03:41:09 26 4
gpt4 key购买 nike

我尝试运行以下代码:

double f = 4.35; 
int n = (int) (100 * f);

n 将为 434。为什么?

最佳答案

4.35 不能精确地表示为 float ,因为 .35 不是 2 的(负)幂。因此,会以某种方式进行一些舍入。乘以 100 时也可能会进行舍入。如果结果数字略小于 435,则转换为 int 将取底,即 434。

如果您想四舍五入到最接近的整数,您可以将结果加 0.5,然后转换为 int。这是舍入数字的最通用方法,尽管 Java 有一个内置的舍入实现。

double f = 4.35; 
int n = (int) (100 * f + 0.5);

关于java - 精度损失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13111212/

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