Ruby 为什么'27**(1.0/3.0)`不同于'27**(1/3)`?
请让我知道这是否是获得立方根的正确方法 我不明白为什么Ruby 为什么'27**(1.0/3.0)`不同于'27**(1/3)`?,ruby,Ruby,请让我知道这是否是获得立方根的正确方法 我不明白为什么 27 ** (1.0/3.0) #=> 3 不同于 27 ** (1/3) #=> 1 第一个除法是十进制除法,而后者是整数除法 也就是说,1.0/3.0将产生一个十进制结果,而1/3将产生一个整数结果,在这种情况下,i0 因此,结果会有所不同,因为这是两者的结果 27**0.333... 或 当然,这两者显然是不同的 强制其中一个运算符为十进制就足以使整个操作产生十进制结果,例如,1/3.0将产生0.3333…(1/3
27 ** (1.0/3.0) #=> 3
不同于
27 ** (1/3) #=> 1
第一个除法是十进制除法,而后者是整数除法 也就是说,
1.0/3.0
将产生一个十进制结果,而1/3
将产生一个整数结果,在这种情况下,i0
因此,结果会有所不同,因为这是两者的结果
27**0.333...
或
当然,这两者显然是不同的
强制其中一个运算符为十进制就足以使整个操作产生十进制结果,例如,1/3.0将产生0.3333…(1/3)
返回0
,因为3
是整数。在ruby中,如果对除数和被除数都使用整数进行除法,则会得到一个整数值。由于任何提升到0
的值都是1
,因此您将得到1
作为答案
(1.0/3.0)
返回0.3333
,因为您没有除以2个整数,所以从27**0.33…
中得到3
,整数除法结果为整数:
irb(main):004:0> 1/3
=> 0
irb(main):005:0> 1.0/3.0
=> 0.3333333333333333
27**0=1
<代码>27**(1/3)=3
1.0 / 3.0 # => 0.3333333333333333
27 ** 0.333 # => 2.9967059728946346
1 / 3 # => 0
27 ** 0 # => 1
第二个例子是整数除法。一个有多少个三?零。幂为0的任何数字都是1 键入对话
当计算1.0/3.0时,它是十进制的
这是1.0/3.0=0.33#这是一个小数
1/3-它舍入到最接近的整数
因此:
@对所有的回应者:哇,多么激烈的比赛啊。请不要饿着肚子问问题作者:)
1.0 / 3.0 # => 0.3333333333333333
27 ** 0.333 # => 2.9967059728946346
1 / 3 # => 0
27 ** 0 # => 1
27 ** (1.0/3.0) #=> 3
is different from
27 ** (1/3) #=> 1