如果我有一个像3.75的浮点数,我怎样才能将它分成整数3和浮点数0.75?拆分浮点数到Ruby中的整数和小数点
是否必须将float转换为字符串,然后将字符串拆分为“。”,然后再将这些部分转换为整数并再次浮动,或者是否有更优雅或“正确”的方式来执行此操作?
如果我有一个像3.75的浮点数,我怎样才能将它分成整数3和浮点数0.75?拆分浮点数到Ruby中的整数和小数点
是否必须将float转换为字符串,然后将字符串拆分为“。”,然后再将这些部分转换为整数并再次浮动,或者是否有更优雅或“正确”的方式来执行此操作?
如前所述,您可以使用3.75.to_i
得到整数。 获得余数的另一种方法是使用例如%
运算符。 3.75 % 1
可以使用Numeric#divmod与参数1
此:
返回包含由通过数字除以NUM获得的商和模数的阵列。
a.divmod 1
=> [3, 0.75]
如果你想获得精确值,这种方法可用于BigDecimal还有:
3.456.divmod 1
=> [3, 0.45599999999999996]
require 'bigdecimal'
div_mod = BigDecimal("3.456").divmod 1
[div_mod[0].to_i, div_mod[1].to_f]
=> [3, 0.456]
+1,我不熟悉这种方法。感谢您的链接。 – Gazler 2012-02-07 11:54:14
请注意,此解决方案不同于可接受的负数解决方案。 '-3.75.to_i#=> -3',然而'-3.75.divmod 1#=> [-4,0.25]' – 2012-02-07 12:37:47
谢谢!谢谢大家! – 2012-02-07 10:34:04
这是一个明智的解决方案:)它对我也很好;) – 2016-02-12 12:32:04