gpt4 book ai didi

Java 四舍五入问题

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:15:17 29 4
gpt4 key购买 nike

基本上,我不明白为什么下面的代码会在 4.35 * 100 = 435.0 转换为 435 的 int 时输出 434,对吗?

对此的简单解释是什么?这是一个经常出现的问题吗?

你会如何解决这个问题?

public class RoundOffDemo {
public static void main(String[] args) {
double price = 4.35;
int cents = (int) (100 * price); // Should be 435
System.out.println(cents); // Prints 434!
}
}

最佳答案

问题是 4.35 不能用二进制精确表示。所以 4.35 * 100 不完全是 435.0。 (二进制中的每个小数都是 2 的倒数幂之和,所有这些都是终止小数。不幸的是,0.35 十进制有一个不终止的二进制展开。所以 4.35 更像是 4.349999...x(其中 x 是超出该范围的一切都为零的东西,这要归功于机器对 float 的有限表示。)然后整数截断会产生 434。您可以使用 Math.round() 来避免这个问题。

关于Java 四舍五入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8658719/

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