puts "-1/2 is [expr -1/2]"
对于上述内容,输出为:
-1/2 is -1
我不知道它是如何工作的。
答案 0 :(得分:5)
当你使用-1/2
时,你将两个整数的除法传递给解释器,因此告诉它做一个整数除法,它返回最接近的整数,小于结果。
例如,-1 / 2给出-0.5,-1是最接近-0.5的整数。
其他一些例子:
% expr 5/2 ;# Should give 2.5, closest integer down is 2
2
% expr -5/2 ;# Should give -2.5, closest integer down is -3
-3
% expr 5/-2 ;# Should give -2.5, closest integer down is -3
-3
如果您想获得-0.5作为结果,您可以将两个值中的一个更改为浮点数...
% expr -1.0/2
-0.5
% expr -1/2.0
-0.5
或在任一号码上使用double
% expr double(-1)/2
-0.5
% expr -1/double(2)
-0.5
请注意,为了提高速度和预防注射,您可能需要brace your expr
essions