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

时间:2015-07-09 03:48:29

标签: ruby-on-rails ruby scientific-notation

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

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

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

2 个答案:

答案 0 :(得分:6)

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

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

Random gen = new Random();
bool result = gen.Next(100) < 50 ? true : false;

答案 1 :(得分:1)

要将整数 Bignum 或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

通常在整数上使用 .to_f Bignum BigDecimal 会以科学记数法转换数字数字很​​长(长度> 15)。