我的输出类似于以下指数数字。
6.0E-07
8.1e-07
1.1E-09
但我想上面的数字应该如下所示
0.00000060
0.00000081
0.0000000011
我的意思是十进制格式。我在网上冲浪。我找不到任何解决办法。
红宝石有可能吗?如果是的话怎么做?。
答案 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.
。