2012-02-07 67 views
11

如果我有一個像3.75的浮點數,我怎樣才能將它分成整數3和浮點數0.75?拆分浮點數到Ruby中的整數和小數點

是否必須將float轉換爲字符串,然後將字符串拆分爲「。」,然後再將這些部分轉換爲整數並再次浮動,或者是否有更優雅或「正確」的方式來執行此操作?

回答

13

如前所述,您可以使用3.75.to_i得到整數。 獲得餘數的另一種方法是使用例如%運算符。 3.75 % 1

+0

謝謝!謝謝大家! – 2012-02-07 10:34:04

+0

這是一個明智的解決方案:)它對我也很好;) – 2016-02-12 12:32:04

16

可以使用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] 
+0

+1,我不熟悉這種方法。感謝您的鏈接。 – Gazler 2012-02-07 11:54:14

+2

請注意,此解決方案不同於可接受的負數解決方案。 '-3.75.to_i#=> -3',然而'-3.75.divmod 1#=> [-4,0.25]' – 2012-02-07 12:37:47