gpt4 book ai didi

float 步长的标度范围精度

转载 作者:行者123 更新时间:2023-12-02 09:22:50 24 4
gpt4 key购买 nike

我打算用步长 0.05 生成一个从 0.05 到 0.95 的数组,就像 0.05, 0.1, 0.15, 0.2, ... .但是下面的代码有一些精度问题:

scala> 0.05 to 0.95 by 0.05
res11: scala.collection.immutable.NumericRange[Double] = NumericRange(0.05, 0.1, 0.15000000000000002, 0.2, 0.25, 0.3, 0.35, 0.39999999999999997, 0.44999999999999996, 0.49999999999999994, 0.5499999999999999, 0.6, 0.65, 0.7000000000000001, 0.7500000000000001, 0.8000000000000002, 0.8500000000000002, 0.9000000000000002)

谁能给我一些关于如何解决这个问题的想法?谢谢。

最佳答案

如果您需要精确的十进制计算,实际可靠的方法是使用 BigDecimal :

BigDecimal("0.05") to BigDecimal("0.95") by BigDecimal("0.05")

它要慢得多,因此在某些情况下是 Not Acceptable ,但这就是在现代计算机上使用小数的现实。

关于 float 步长的标度范围精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40607402/

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