當我加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至1.9.3錯誤
- 4. 紅寶石1.9.2安裝和寶石
- 5. Time.zone是紅寶石1.9.2 -p290
- 6. 紅寶石scrubyt 1.9.2在Windows
- 7. 分裂紅寶石1.9.2
- 8. 紅寶石1.9.2 Find.find編碼
- 9. 錯誤紅寶石寶石
- 10. RVM 1.0.2無法構建紅寶石1.9.2
- 11. 紅寶石1.8.7升級到紅寶石1.9.2
- 12. 紅寶石機械化與jRuby 1.6.0(紅寶石1.9.2)
- 13. 變化克隆在紅寶石1.9.2.p290或紅寶石1.9.3
- 14. 升級紅寶石1.8.6到紅寶石1.9.2
- 15. replica CSV.generate_line紅寶石的行爲1.8.7在紅寶石1.9.2
- 16. JSON編碼錯誤地逃脫(Rails 3中,紅寶石1.9.2)
- 17. 錯誤建設紅寶石1.9.2在arm機器
- 18. 紅寶石1.9.2在rvm上的安裝錯誤
- 19. 紅寶石版本> = 1.9.2錯誤,但使用Ruby 1.9.3
- 20. 在紅寶石中需要幫助分段錯誤1.9.2
- 21. 錯誤安裝JSON紅寶石寶石
- 22. 需要在紅寶石寶石錯誤
- 23. 紅寶石寶石版本錯誤
- 24. 錯誤推紅寶石寶石rubygems.org
- 25. 錯誤而安裝紅寶石寶石
- 26. oily_png紅寶石寶石安裝錯誤
- 27. 錯誤更新紅寶石寶石sequel_pg
- 28. 紅寶石MySQL的寶石錯誤
- 29. 紅寶石寶石安裝錯誤
- 30. 紅寶石mysql2寶石安裝錯誤
的可能重複的[紅寶石:從浮點數轉換成整數中紅寶石產生奇怪的結果](http://stackoverflow.com/questions/5255629/ruby從浮點轉換到整數在紅寶石產生奇怪的結果) – 2011-03-24 22:15:12