Ruby:用科学记数法控制打印

如果我在Ruby中有一个非常长的浮点数,例如:

x = 123456789012345.to_f 

当它显示时,例如,通过to_s ,它以科学记数显示:

  "1.23456789012345e+14" 

有没有办法抑制科学记数法中的格式化,或硬币的另一面,强迫它为极短的浮点数?

您可以使用%运算符执行各种操作 。 例如:

 x = 123456789012345.to_f "%f" % x # => "123456789012345.000000" y = 1.23 "%E" % y # => "1.230000E+000" 

各种选项与sprintf函数相同。

为方便起见,您还可以控制小数点后的位数。 所以:

 x = 1.234598 "%.3E" % x=> "1.235E+00" 

你可以做的另一个巧妙的事情是从左边填充空间,如下所示:

 x = 1.234 "%10.3E" % x => " 1.234E+00"