gpt4 book ai didi

ruby - ruby 中最好的数值精度是多少

转载 作者:太空宇宙 更新时间:2023-11-03 17:40:51 26 4
gpt4 key购买 nike

我想知道如何才能在 ruby​​ 上获得最佳精度。有人告诉我最好的精度可能在 0 到 1 之间,因为当你进入更大的数字时,步长也会增加。

我想找出答案的方法是知道最小 float 是多少以及下一个 float 是多少,然后精度就会有所不同,对吗?如果我是对的,我怎么能在 ruby​​ 上做到这一点?

我不确定如何使用这个 http://ruby.wikia.com/wiki/Float找到该信息。

感谢任何帮助。

最佳答案

就有效数字而言,精度是相同的,与小数位数无关。也就是说,如果仅通过将自然范围内的数字除以 1000.0 将范围从 [0.0, 1000.0] 缩小到 [0.0, 1.0],这对范围的精度没有明显影响。事实上,较大的范围将具有略高的精度,因为它完全包含较小的范围。

至于发现绝对精度,你有两个问题:

  1. 绝对精度取决于幅度,幅度在 [0, 1] (limx→0 log(x) = –∞)。因此,该范围内的数字没有一个精度。您只能得出范围内给定点的绝对精度。
  2. 发现最小步长(称为 ulp)的常用技术是将 float 的位表示解释为整数,将其递增 1,然后将结果重新解释为 float 。 Ruby 不会,AFAIK,让你这样做。

但是,有一个迭代解决方案。只需将 1.0 添加到数字并减去 ((x + 1.0) - x)。如果差异为零,则将加数加倍 ((x + 2.0) - x) 并重复直到差异不为零。否则,将加数减半(至 0.5)并重复直到差为零。每当您停止时,产生非零差异的最低加数就是 ulp。 (我是凭着模糊的内存描述的,所以可能是NQR。)

关于ruby - ruby 中最好的数值精度是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4430556/

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