2011-12-21 11 views

Odpowiedz

22

Wystarczy użyć konwersji ciągów. Konieczne wymuszenie float zostanie wykonane automatycznie:

"%f" % "1.0e-05" 
=> "0.000010" 

# Which, behind the scenes is the same as: 
"%f" % "1.0e-05".to_f 
=> "0.000010" 

Dostosuj w razie potrzeby, aby uzyskać większą lub mniejszą dokładność. Na przykład:

"%.5f" % "1.0e-05" 
=> "0.00001" 

Jeśli chcesz uzyskać prawdziwą fantazję i zerwać niepotrzebne zera na końcu, oto jeden sposób. (Mam nadzieję, że ktoś zaproponuje coś bardziej eleganckie, nie mogłem myśleć o niczym):

("%.20f" % "1.0e-05").sub(/\.?0*$/, "") 
=> "0.00001" 
6

Jeśli jesteś zainteresowany robieniem jakichkolwiek matematyki na kilku i to jest zbyt mały:

"%f" % "1.0e-10" 
=> "0.000000" 

# not so good for various reasons 
("%f" % "1.0e-10") == ("%f" % "1.0e-8") 
=> true 

Możesz użyć BigDecimal:

BigDecimal.new "1.0e-10" 
=> #<BigDecimal:7ffdf6c38678,'0.1E-9',9(18)> 
Powiązane problemy