在Ruby中将float拆分为整数和小数

如果我有一个像3.75的浮点数,我怎么能把它分成整数3和浮点数0.75?

我是否必须将float转换为字符串,然后将字符串拆分为“。”,然后将这些部分转换为整数和浮动,或者是否有更优雅或“正确”的方法来执行此操作?

如上所述,您可以使用3.75.to_i来获取整数。 获得余数的另一种方法是使用%运算符,例如。 3.75 % 1

您可以将Numeric #divmod与参数1使用:

返回一个数组,其中包含通过将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]