Rails / Ruby如何始终显示小数精度

Kri*_* MP 0 ruby math ruby-on-rails decimal

我目前正在转换一些python统计资料库,需要产生具有高十进制精度的数字。例如,我这样做:

i = 1
n = 151
sum = (i - 3/8) / (n + 1/4)
Run Code Online (Sandbox Code Playgroud)

结果将为0。

我的问题是,当我进行这种计算时,如何始终自动显示小数精度?

我想要的输出是: 0.004132231404958678

Ale*_*kin 5

在ruby中,所有算术运算都产生与操作数相同类型的值(精度更高的值)。

也就是说,3/4是一个整数除法,结果为0

为了使示例正常工作,您将确保在任何地方都不会失去精度:

i = 1.0
n = 151.0
sum = (i - 3.0/8) / (n + 1/4.0)
Run Code Online (Sandbox Code Playgroud)

请注意,与大多数(如果不是全部)语言一样,它Float受到污染:

0.1 + 0.2 #? 0.30000000000000004
Run Code Online (Sandbox Code Playgroud)

如果需要一个精确值,可以使用BigDecimalRational