gpt4 book ai didi

java - 使用 BigDecimal 将两个数字相乘会返回错误值

转载 作者:IT老高 更新时间:2023-10-28 21:00:38 33 4
gpt4 key购买 nike

执行以下代码:

new BigDecimal(0.06 * 3).toString()

返回 0.179999999999999993338661852249060757458209991455078125 而不是 0.18

执行中

new BigDecimal(0.06).multiply(new BigDecimal(3)).toString() 

返回相同的结果。

这怎么可能?

最佳答案

您不是使用 BigDecimal 将两个数字相乘。您使用 double 算术将它们相乘,并将结果传递给 BigDecimal 构造函数。

你想要:

new BigDecimal("0.06").multiply(new BigDecimal("3")).toString()

请注意,您确实需要字符串中的值 - 否则您使用 0.06 的 double 值,这不完全是 0.06...您已经在开始之前丢失信息。 (你并不真的需要 3 的字符串形式,但我这样做是为了保持一致性。)

例如:

System.out.println(new BigDecimal(0.06));

打印

0.059999999999999997779553950749686919152736663818359375

关于java - 使用 BigDecimal 将两个数字相乘会返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25179127/

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