gpt4 book ai didi

ruby - ruby 在数值准确性方面的行为(方案比较)

转载 作者:数据小太阳 更新时间:2023-10-29 07:53:59 24 4
gpt4 key购买 nike

在 Ruby (1.9) 中,数字总是被认为是精确的吗?我知道 Ruby 在底层用数字做了一些相当复杂的事情,因为你可以做一些疯狂的事情,比如要求 1 万亿的 1 万亿次方,你会得到一个答案(在等待它计算很多个月之后)。

在 Scheme 中,规范的一部分规定实现应指示实现的数字内部表示是否“准确”。例如,1/2 总是精确的,1/3 是精确的,0.3333 是精确的等等。但是对一个精确数字的不精确数学运算的结果可能会产生一个 Scheme 实现知道不精确的数字(由于 float 点精度)。

(exact? (/ 0.33333 2))
=> #f

那是假的,所以不准确。

有没有办法在 Ruby 中推断出相同的信息?如果我在数学运算中总是使用一个数字的Complex(或Rational)表示,它在 Ruby 中是总是是精确的,还是只是极端接近准确?

Complex("0.33333") / 2

这是否准确?

最佳答案

Ruby 的类 Floatnot exact 。另一方面,类 Integer 或多或少是"is",因为它从 Fixnum 无缝转移到 Bignum

>> 1.4534346345235236346363574564356435
=> 1.45343463452352
>> 10**400
=> 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
>> 10.0**400
=> Infinity

看起来其他人很乐意看到您所询问的测试,即 Numeric#exact? -- 请参阅此 feature request

关于ruby - ruby 在数值准确性方面的行为(方案比较),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8337573/

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