我正在尝试用一个变量替换1e18中的数字18,但是我尝试的所有操作都给出了错误。也许,如果我知道它的作用,我就可以自己写不同的公式。
字母3对数字有什么作用。如何将其应用于名为X的变量?
e与**有何区别
答案 0 :(得分:4)
红宝石中的数字1e18是什么意思?
1e18
(或1E18
)是使用number literal的E-notation。 Ruby将此数字解释为值为1×10 18 (即1,000,000,000,000,000,000)的浮点数。
我正在尝试将1e18中的数字18替换为变量
1e18
等效于:
1.0 * 10 ** 18
#=> 1.0e+18
因此您可以写:
x = 18
1.0 * 10 ** x
#=> 1.0e+18
或简单地:
10.0 ** x
#=> 1.0e+18
e
与**
有何不同
结果是相同的,但是1e18
(是文字)是由解析器求值的,而**
是方法调用。
答案 1 :(得分:1)
正如萨米(Sami)的评论所提到的:
1e18
是一种科学符号,意思是1 * 10^18
Read more about the number here
如何在Ruby中使用此类数字?
这是一个简单的例子:
require 'bigdecimal'
a = BigDecimal.new "1e18"
#=> #<BigDecimal:2cf0880,'0.1E19',9(18)>
a.to_f
#=> 1.0e+18
a.to_s
#=> "0.1E19" # notice 0.1E19 and not 1.0E19
"%f" % a
#=> "1000000000000000000.000000"
("%f" % a).to_i
#=> 1000000000000000000