关于求余函数REM的小问题
在编程中发现,如(rem 2.5 0.1)得到的结果居然是0.1,2.5不是0.1的整数倍么,不该是整除么,结果应该是0啊,为什么会是0.1?这是BUG么?还是本来就是定义为这样,请教一下大家。(defun MREM(LST)
(IF(VL-EVERY'NUMBERP LST)
(APPLY(FUNCTION REM)(MAPCAR'(LAMBDA(X)(/ X(LAST LST)1.))LST))))
(MREM '(2.5 0.1)) 整数运算才有意义,你带小数的运算,结果可能不可靠,不一定出个什么幺蛾子 本帖最后由 liuhe 于 2023-11-26 08:06 编辑
余数,数学用语。在整数的除法中,只有能整除与不能整除两种情况。当不能整除时,就产生余数,取余数运算 a mod b = c(b不为0)表示整数a除以整数b所得余数为c。例如:7÷3 = 2…1,更专业的符号也可以写作 7÷3=2 又 1/3,或者 7 mod 3=1。 本帖最后由 mahuan1279 于 2023-11-26 08:50 编辑
_$ (rem 2.5 0.1)
0.1
_$(rem 0.1 0.1)
0.0
_$ (rem (rem 2.5 0.1) 0.1)
0.1
_$ (rem 2.5 0.1 0.1)
0.1
(/ (rem (* 2.5 10)(* 0.1 10))10) QF770 发表于 2023-11-28 15:48
(/ (rem (* 2.5 10)(* 0.1 10))10)
是不是先要判断除数是几位小数? mahuan1279 发表于 2023-11-29 14:24
是不是先要判断除数是几位小数?
除数被除数是非整数,不符合数学规则,这种结果有何意义呢,如何使用呢? QF770 发表于 2023-11-28 15:48
(/ (rem (* 2.5 10)(* 0.1 10))10)
只能这样了
页:
[1]