在ruby中将指数转换为十进制

时间:2014-06-11 05:54:57

标签: ruby

我的输出类似于以下指数数字。

6.0E-07

8.1e-07

1.1E-09

但我想上面的数字应该如下所示

0.00000060

0.00000081

0.0000000011

我的意思是十进制格式。我在网上冲浪。我找不到任何解决办法。

红宝石有可能吗?如果是的话怎么做?。

2 个答案:

答案 0 :(得分:3)

您可以使用BigDecimal#to_s

require 'bigdecimal'

BigDecimal.new('6.0e-07').to_s('F') #=> "0.0000006"
BigDecimal.new('8.1e-07').to_s('F') #=> "0.00000081"
BigDecimal.new('1.1e-09').to_s('F') #=> "0.0000000011"

答案 1 :(得分:1)

当数字太大或太小而无法以有意义的方式显示时,科学记数法是标准的。

以您喜欢的方式呈现数字的最佳方式是使用字符串format controls

'%.10f' % 8.1e-07
# => "0.0000008100"

如果你不喜欢尾随的零,你总是可以使用.sub(/0+$/, '')之类的东西来修剪它们,但要注意不要将0.0转换为0.