2017-08-16 57 views
0

我基本上想要一個精確到小數點後的第六個的浮點數。有沒有一種更有效的方式來產生一個浮點到Ruby中的特定十進制值?

喜歡的東西0.123456

這就是我試圖做的:

irb(main):001:0> rand = rand(1.000000..100.000000) 
=> 97.63428182481212 

但我顯然不希望它是精確的,所以我決定做

irb(main):002:0> rand = rand(1.000000..100.000000).round(6) 
=> 12.944086 

但現在還有一個額外的步驟,看起來我應該能夠以另一種方式做到這一點。我將不得不生成幾百個數字,所以我不確定是否應該使用它,並使用.round()

+2

記住一個數字的呈現方式是相當隨意的,在內部它總是會有比顯示的更多的信息。所有浮點數都是用十進制表示的近似值。如果你需要六個地方,那麼你需要像[BigDecimal](https://ruby-doc.org/stdlib-2.4.1/libdoc/bigdecimal/rdoc/BigDecimal.html)這樣的定點方法。 – tadman

+1

四捨五入「幾百個數字」應該相對較快。在我的機器上,一千個數字花費了1.5ms。所以,它可能足夠滿足您的需求。 –

+0

@tadman,是的,你是對的。我最終做了一個從整數到小數的移植,比例爲6,最大精度爲16。@ Jared Beck,是的,我不知道爲什麼我很擔心。 – dsomel21

回答

1

這是怎麼回事?

rand(1000000)/1000000.0 
#=> 0.071203 
相關問題