当我加0.1+0.2
我得到0.30000000000000004
,但是当我在ruby 1.8.7
中添加相同的数字时,我得到正确的答案0.3
。我得到0.3
四舍五入,但我只是想通过添加0.1
和0.2
红宝石加法错误-1.9.2
回答
您需要bigdecimal才能完成工作。
(BigDecimal('0.1') + BigDecimal("0.2")).to_f
见下面链接:
''因为它是ruby的bug“' - 这不是一个错误 - 它是浮点运算的方式 - 声称这是一个bug的bug报告被标记为拒绝。 – 2011-08-18 05:20:49
谢谢安德鲁.. – a5his 2011-08-18 10:15:16
你的老红宝石骗你得到ruby 1.9.2
0.3
:
$ ruby -v
ruby 1.8.7 (2010-06-23 patchlevel 299) [x86_64-linux]
$ irb
irb(main):001:0> printf("%40.40f\n", 0.1 + 0.2)
0.3000000000000000444089209850062616169453
=> nil
Floating point numbers是非常棘手的野兽。
这是一个有趣的概念:它骗了你,并给你正确的答案,它不应该做到这一点。浮点_s_有趣! – 2011-03-24 06:04:28
@安德鲁马歇尔,谢谢你的欢笑。 :) – sarnold 2011-03-24 06:06:56
我使用红宝石1.8.7头,而不是patchlevel。 – 2011-03-24 06:13:27
- 1. 红宝石fastercsv错误1.9.2
- 2. 红宝石rfuzz编译错误1.9.2
- 3. 红宝石1.9.2安装和宝石
- 4. 错误红宝石宝石
- 5. 红宝石1.9.2 Find.find编码
- 6. RVM 1.0.2无法构建红宝石1.9.2
- 7. 红宝石机械化与jRuby 1.6.0(红宝石1.9.2)
- 8. replica CSV.generate_line红宝石的行为1.8.7在红宝石1.9.2
- 9. 错误而安装红宝石宝石
- 10. 错误推红宝石宝石rubygems.org
- 11. 错误安装JSON红宝石宝石
- 12. 错误更新红宝石宝石sequel_pg
- 13. 红宝石宝石版本错误
- 14. JSON编码错误地逃脱(Rails 3中,红宝石1.9.2)
- 15. 红宝石1.9.2在rvm上的安装错误
- 16. 在红宝石中需要帮助分段错误1.9.2
- 17. 红宝石版本> = 1.9.2错误,但使用Ruby 1.9.3
- 18. wicked_pdf与轨道3.1和红宝石1.9.2
- 19. 乘客3与RVM和红宝石1.9.2
- 20. 回形针红宝石1.9.2-P180
- 21. syncEnumerator相当于红宝石1.9.2
- 22. 绑定qt与红宝石1.9.2
- 23. Ruby 1.9.2和pcap宝石?编译错误
- 24. 红宝石httparty加载错误
- 25. 红宝石版本错误
- 26. 错误:红宝石2.0.0
- 27. 红宝石SOAP4R wsdl2ruby.rb错误
- 28. 红宝石错误7 64
- 29. 红宝石浮点错误
- 30. 红宝石证书错误
的可能重复的[红宝石:从浮点数转换成整数中红宝石产生奇怪的结果](http://stackoverflow.com/questions/5255629/ruby从浮点转换到整数在红宝石产生奇怪的结果) – 2011-03-24 22:15:12