Phi*_*ilo 0 ruby math precision floating-accuracy
我正在学习Ruby以获得乐趣,也用于创建网站(但这是无关紧要的).在玩它时,我注意到一些"怪异"的东西
当我用irb计算4.21 + 5时,它回答9.21(很奇怪,对吧?)
当我计算4.23 + 5时,它给出了9.23(哇,这绝对是奇怪的).
当我输入4.22 + 5时,它会回答9.21999 ......(等等......这真的很奇怪).
因此我的问题是:发生了什么?我理解这种行为与分裂或真正的大数字,但在这个简单的情况下.... ???
这是否意味着我无法使用Ruby开发会计应用程序?是否有补丁或其他东西需要应用?(对我的大脑,最有可能)
您应该阅读计算机中的浮点表示.本指南是一个很好的起点.这是它的缺点:
因为在内部,计算机使用的格式(二进制浮点)无法准确地表示0.1,0.2或0.3之类的数字.
编译或解释代码时,"0.1"已经四舍五入到该格式中最接近的数字,即使在计算发生之前也会导致小的舍入误差.
顺便说一句,我不确定为什么你认为4.21 + 5 = 9.21或4.23 + 5 = 9.23是奇怪的.如果你认为它很奇怪,因为一个文字是一个整数,一个是浮点数,最终是一个浮动响应,这就是Ruby和其他一些语言处理数字类型差异的方式.如果Ruby降低了你的浮点数的精度并且只返回一个整数(9),那么它就不方便了,所以任何整数文字都有效地改为浮点数.
至于在财务应用程序中使用浮点数,请查看开发财务应用程序.主要内容是使用Decimal对象与Float.
归档时间: |
|
查看次数: |
2099 次 |
最近记录: |