2017-02-23 2 views
-1

ich diesen Wert BigDecimal.new("42.00")Zufallswert für BigDecimal

SecureRandom.random_number(100) 

generieren möchte Aber wie kann ich zufällige Menge wie diese „42.00“ erzeugen?

+0

Warum denken Sie, dass 'BigDecimal' Sie geben dieses Format? Weil es für Geldwerte empfohlen wird? – Stefan

Antwort

2

BigDecimal#new akzeptiert als auch numerische Werte:

a = BigDecimal.new(SecureRandom.random_number(100)) 
#=> #<BigDecimal:7f88dace71f0,'0.42E2',9(27)> 
a.to_f 
#=> 42.0 

Btw, was der Punkt der Doppel SecureRandom.random_number ist? :)

edit:

Um die Reihe von gewünschten Format zu erzeugen:

sprintf("%0.02f", a) 
#=> "42.00" 
sprintf("%0.05f", a) 
#=> "42.00000" 
+0

Ich möchte jede beliebige Zufallszahl generieren. Gibt es einen besseren Weg? –

+0

@PeterPenzov Ich habe gezeigt, wie man zufällige 'BigDecimal' -Instanzen generiert. Keine Notwendigkeit für doppelte 'SecureRandom.random_number' –

+0

Ja, mein Fehler. Aber wie kann ich mit .00 Nummer erzeugen? –