4

请让我知道这是否是获得立方根的正确方法。

我不明白为什么

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

不同于

27 ** (1/3) #=> 1
4

5 回答 5

11
1.0 / 3.0 # => 0.3333333333333333
27 ** 0.333 # => 2.9967059728946346

1 / 3 # => 0
27 ** 0 # => 1

第二个是整数除法的例子。一共有多少个三?零。任何 0 次幂的数都是 1。

于 2013-03-13T07:58:57.893 回答
4

第一个除法是十进制除法,后者是整数除法

1.0/3.0将产生一个小数结果,而1/3将产生一个整数结果,在这种情况下我0

因此结果会有所不同,因为它是两者之一的结果

27**0.333...

或者

27**0

这当然是明显不同的。

强制其中一个运算符为十进制以使整个操作产生十进制结果就足够了,例如 1/3.0 将产生 0.3333 ...

于 2013-03-13T07:58:00.210 回答
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

于 2013-03-13T07:58:21.960 回答
3

(1/3)返回0因为3是一个整数。在 ruby​​ 中,如果你使用整数作为除数和被除数,你将得到一个整数值。既然提出的任何事情0都是1,你得到1的就是答案

(1.0/3.0)返回0.3333,因为你没有除以 2 个整数,所以你327 ** 0.33...

于 2013-03-13T07:58:02.437 回答
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
于 2013-03-13T08:29:06.947 回答