ruby是否具有與Java的BigDecimal.setScale(6,Round_half_up)等價的任何內置函數?我需要從浮點數中取6個十進制值,並根據小數點後的7進行取整。ruby是否等價於Java的BigDecimal.setScale(6,Round_half_up)
回答
您可能在尋找Float#round,它有兩個參數:一個十進制數字和half
關鍵字指定的方向(向上舍入是默認值)。
1.23456789.round(6, half: :up)
=> 1.234568
在Ruby 2.4之前,您無法指定舍入方向 - 它總是舍入。 Heroku's "Ruby 2.4 Released: Faster Hashes, Unified Integers and Better Rounding"涵蓋了一些更詳細的變化。
BigDecimal可幫助您更準確地執行這些計算(即避免浮點算術錯誤)。同樣,四捨五入爲默認值,但可以明確指定:
big_decimal = BigDecimal("1.23456789")
big_decimal.round(6, BigDecimal::ROUND_HALF_UP).to_f
=> 1.234568
這裏有一個問題:Java的BigDecimal的精確值,Ruby的浮動已經普遍知道的功能/精確度問題,內部for和字符之間的轉換等... –
@JacekCz Ruby的'BigDecimal'就像Java有'float'一樣,每種語言都有浮點精度。旁註:上面的答案只適用於Ruby> = 2.4 – engineersmnky
非常有效,謝謝!我已經編輯了答案,以包含這些點的例子。 – jpn
- 1. Vimscript是否等價於Ruby的`any?'
- 2. Ruby中的Java CLASSPATH等價於什麼?
- 3. java等價於ruby的|| ||語法
- 4. Java .properties文件等價於Ruby?
- 5. 是否有「python -i」的ruby等價物?
- 6. Java的Ruby等價物ObjectSpace.each_object
- 7. python等價於ruby的__method__?
- 8. Ruby等價於Python的DictWriter?
- 9. python等價於ruby的`map.with_index`?
- 10. python等價於ruby的StringScanner?
- 11. 它是否存在Java的Wicket的Ruby等價物?
- 12. Ruby on Rails的「url_for」是否有Java的等價物?
- 13. 是否有一個等價於PHP spl_autload_register的ruby?
- 14. Ruby ::等價於Tie :: FIle?
- 15. PL/Ruby等價於MySQL
- 16. java等價於mkstemp
- 17. 是否有.Net System.Data的Java等價物?
- 18. excel vlookup是否有Java的等價物?
- 19. 什麼是C#等價於Java的isInstance()?
- 20. java等價於swfobject的
- 21. Java的readInt()等價於C?
- 22. 等價於python「dir」的Java?
- 23. 是否有一個C#等價於Java的CountDownLatch?
- 24. 在Java中是否有TweenMax等價物
- 25. Ruby的等價於PHP的ucfirst()函數
- 26. Ruby的等價於C#的??運營商
- 27. Ruby的等價於PHP的「get_defined_vars」函數?
- 28. #define是否等價於一個函數?
- 29. 是否有.Net等價於java.util.concurrent.Executor?
- 30. AsynchronousFileChannel是否有等價於transferTo?
謝謝大家回答我的問題.. – Satish