如何将科学记数法字符串转换为十进制表示法?

我想find并将csv文件中的所有科学记数法字符串convert为十进制表示法,例如:

 1.0e-05 to 0.00001 

我怎么能用ruby做到这一点?

只需使用字符串转换。 浮动的必要强制将自动完成:

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

根据需要进行调整以获得更高或更低的准确度 例如:

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

如果你想得到真正的幻想并在最后砍掉不必要的零,这是一种方式。 (希望有人会建议更优雅的东西;我想不出任何东西):

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

如果你有兴趣对一个数字进行任何数学计算而且它太小了:

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

您可以使用BigDecimal:

 BigDecimal.new "1.0e-10" => #