如果我有一个像3.75那样的浮点数,怎么能把它分成整数3和浮点数0.75?
我是否必须将float转换为字符串,然后将字符串拆分为“。”,然后将这些部分转换为整数和浮点数,或者是否有更优雅或“正确”的方法来执行此操作?
答案 0 :(得分:22)
您可以对参数1
使用Numeric#divmod:
返回一个数组,其中包含通过将num除以numeric得到的商和模数。
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 :(得分:15)
如前所述,您可以使用3.75.to_i
来获取整数。
获得余数的另一种方法是使用%
运算符,例如。
3.75 % 1