如果这是获得立方根的正确方法,请告诉我。
我无法理解为什么
27 ** (1.0/3.0) #=> 3
与
不同27 ** (1/3) #=> 1
答案 0 :(得分:11)
1.0 / 3.0 # => 0.3333333333333333
27 ** 0.333 # => 2.9967059728946346
1 / 3 # => 0
27 ** 0 # => 1
第二个是整数除法的例子。一个人有三个三分之一?零。功率0中的任何数字都是1.
答案 1 :(得分:4)
第一个除法是十进制除法,后者是整数除法
即1.0/3.0
将产生小数结果,而1/3
将产生整数结果,在本例中为0
因此结果会有所不同,因为它是
的结果27**0.333...
或
27**0
当然明显不同。
足以强制其中一个运算符为整个运算的十进制数,以产生十进制结果,例如: 1 / 3.0将产生0.3333 ......
答案 2 :(得分:4)
整数除法产生整数:
irb(main):004:0> 1/3
=> 0
irb(main):005:0> 1.0/3.0
=> 0.3333333333333333
27**0 = 1
。 27**(1/3) = 3
答案 3 :(得分:3)
(1/3)
返回0
,因为3
是一个整数。在ruby中,如果你使用整数除以除数和被除数,你将获得一个整数值。因为提升到0
的任何内容都是1
,所以你得到1
作为答案
(1.0/3.0)
返回0.3333
,因为您没有划分2个整数,因此您从3
得到27 ** 0.33...
答案 4 :(得分:0)
输入对话。
计算1.0 / 3.0时 - 小数
这是1.0 / 3.0 = 0.33#是小数
1/3 - 它舍入到最接近的整数。
因此:
27 ** (1.0/3.0) #=> 3
is different from
27 ** (1/3) #=> 1