如果要在不丢失精度的情况下将两个整数相除,则需要将其中一个整数转换为 aFloat
或BigDecimal
第一个:
irb(main):007:0> 2/3
=> 0
irb(main):008:0> Float(2)/3
=> 0.666666666666667
当您说将浮点数/整数与整数/浮点数相除时会得到不同的结果时,我有点困惑?这些应该具有相同的结果:
irb(main):010:0> Integer(2)/Float(3)
=> 0.666666666666667
irb(main):011:0> Float(2)/Integer(3)
=> 0.666666666666667
irb(main):012:0> String( BigDecimal('2')/3 )
=> "0.666666666666666666666666666666666666666666666666666667E0"
irb(main):013:0> String( 2/BigDecimal('3') )
=> "0.666666666666666666666666666666666666666666666666666667E0"
你能提供一个代码示例吗?
就存储而言,任何整数数据都应存储为,Integer
无论其在未来计算中的预期用途如何。
存储浮点数与 BigDecimals 取决于您需要多少精度。如果您不需要太多精度, aFloat
将提供双精度表示。如果需要高精度,BigDecimal
将提供任意精度表示。
相关: Ruby Numbers - 解释整数、浮点数、BigDecimals 和 Rationals 之间的区别