以下是我所询问的一个例子:
我只是好奇Ruby是如何解释这些问题的,就Ruby而言,这些问题明显不同。当我试图在不使用浮点数的情况下编写一个简单的数学问题时我感到很好奇并注意到Ruby会以不同于整数对应的方式读取Floats(也许1/2 不是 0.5'就Ruby而言,这是对手,但这是我在这里问的一部分:为什么不呢?)。
有人能解释一下这里发生了什么吗?
答案 0 :(得分:5)
17424 ** 1 / 2
被解释为(17424 ** 1) / 2
,仅为17424/2
17424 ** (1 / 2)
违反直觉,因为1 / 2
实际上是0
,而不是0.5
。这是因为当您对整数进行除法时,结果的小数将被截断。您可以将其中一个操作数(或两者)更改为浮点数来修复此问题:17424 ** (1.0 / 2)
答案 1 :(得分:2)
17424 ** 1 / 2
17424 / 2
8712
17424 ** (1/2)
17424 ** 0
1
两个整数的 /
是整数。另见:Why is division in Ruby returning an integer instead of decimal value?