Ruby/Rails: 如何以科学计数法显示数字?

Ruby/Rails: How can I display a number in scientific notation?

我认为这会很简单,但我在任何地方都找不到有关它的任何信息。假设用户输入 123456。我想用科学记数法显示它。所以这将是 1.23456 * 10^5。我认为 ruby 或 rails 会有辅助方法,例如 scientific_notation(123456),但我找不到任何东西。这可能吗?

更进一步,如果用户输入科学记数法,如何处理数字?例如,他们输入 1.23456x10^6 - rails 对此进行解析并将 123456 存储在数据库中。

我意识到第二部分是一个远景。

要将数字转换为 e 的幂,我们可以使用 % 运算符。

x = 123456 然后

"%e" %x
=> 1.234560e+05

要将 IntegerBignum 或 BigDecimal 转换为科学计数法,您可以使用 .to_f方法.

这里有一些例子:

# Generate a long number
num = BigDecimal.new('123e+100')
#=> #<BigDecimal:1bca380,'0.123E1003',9(18)> 
num.to_s
#=> "123000000000000....
num.to_f
#=> 1.23e+102

# Convert BigDecimal to integer
int = num.to_i
#=> 123000000000000....
int.class
#=> Bignum
int.to_f
#=> 1.23e+102

通常在 IntegerBignum.to_f 上使用

=17=]BigDecimal 如果数字很长(长度 > 15),则将数字转换为科学计数法。