为什么`27 **(1.0 / 3.0)`与`27 **(1/3)`不同?

时间:2013-03-13 07:56:15

标签: ruby

如果这是获得立方根的正确方法,请告诉我。

我无法理解为什么

27 ** (1.0/3.0) #=> 3 

不同
27 ** (1/3) #=> 1

5 个答案:

答案 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 = 127**(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