2011-12-21 72 views

Trả lời

22

Chỉ cần sử dụng chuyển đổi chuỗi. Sự ép buộc cần thiết để thả nổi sẽ được thực hiện tự động:

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

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

Điều chỉnh khi cần thiết để có được độ chính xác nhiều hơn hoặc ít hơn. Ví dụ:

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

Nếu bạn muốn thực sự ưa thích và cắt bỏ các số không cần thiết ở cuối, dưới đây là một cách. (Hy vọng rằng ai đó sẽ đề nghị một cái gì đó tao nhã hơn, tôi không thể nghĩ về bất cứ điều gì):

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

Nếu bạn quan tâm đến làm bất kỳ loại toán học vào một số và nó là quá nhỏ:

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

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

Bạn có thể sử dụng BigDecimal:

BigDecimal.new "1.0e-10" 
=> #<BigDecimal:7ffdf6c38678,'0.1E-9',9(18)> 
Các vấn đề liên quan