weilu 发表于 2023-11-25 23:35:52

关于求余函数REM的小问题

在编程中发现,如(rem 2.5 0.1)得到的结果居然是0.1,2.5不是0.1的整数倍么,不该是整除么,结果应该是0啊,为什么会是0.1?这是BUG么?还是本来就是定义为这样,请教一下大家。

llsheng_73 发表于 2023-12-6 14:56:17

(defun MREM(LST)
(IF(VL-EVERY'NUMBERP LST)
    (APPLY(FUNCTION REM)(MAPCAR'(LAMBDA(X)(/ X(LAST LST)1.))LST))))
(MREM '(2.5 0.1))

baitang36 发表于 2023-11-26 15:12:36

整数运算才有意义,你带小数的运算,结果可能不可靠,不一定出个什么幺蛾子

liuhe 发表于 2023-11-26 08:05:20

本帖最后由 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:49:55

本帖最后由 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

QF770 发表于 2023-11-28 15:48:52

(/ (rem (* 2.5 10)(* 0.1 10))10)

mahuan1279 发表于 2023-11-29 14:24:14

QF770 发表于 2023-11-28 15:48
(/ (rem (* 2.5 10)(* 0.1 10))10)

是不是先要判断除数是几位小数?

wzg356 发表于 2023-11-29 16:19:22

mahuan1279 发表于 2023-11-29 14:24
是不是先要判断除数是几位小数?

除数被除数是非整数,不符合数学规则,这种结果有何意义呢,如何使用呢?

weilu 发表于 2023-12-5 17:06:18

QF770 发表于 2023-11-28 15:48
(/ (rem (* 2.5 10)(* 0.1 10))10)

只能这样了
页: [1]
查看完整版本: 关于求余函数REM的小问题