Scheme 有可能得到小数的模吗
当我在scheme中编译(模10.5)时。它会产生一个错误<代码>过程中模:位置2:10.5的类型参数错误。 如果数字10.5可以被5整除,我如何检查这个值Scheme 有可能得到小数的模吗,scheme,modulo,Scheme,Modulo,当我在scheme中编译(模10.5)时。它会产生一个错误过程中模:位置2:10.5的类型参数错误。 如果数字10.5可以被5整除,我如何检查这个值 多亏了数学函数模仅定义在整数上。将其应用于浮点数是没有意义的 编辑:如下面的注释所述,这里有一个返回#t或#f的谓词,用于确定除数d是否将数字n平均除而不带余数: (define (divides? n d) (let ((q (floor (/ n d)))) (zero? (- n (* q d))))) 请注意,这可能由于浮点近
多亏了数学函数模仅定义在整数上。将其应用于浮点数是没有意义的 编辑:如下面的注释所述,这里有一个返回
#t
或#f
的谓词,用于确定除数d是否将数字n平均除而不带余数:
(define (divides? n d)
(let ((q (floor (/ n d))))
(zero? (- n (* q d)))))
请注意,这可能由于浮点近似而失败。
模不适用于小数,因为它只接受整数。如上所述,您可以定义另一个过程来查看两个数字是否可以被彼此整除。否则,计算机不知道如何接受模的非整数。“数学函数模仅定义在整数上。将其应用于浮点数是没有意义的。”不正确。许多语言都有类似于fmod
的函数,它对浮点数进行模运算。在某些语言中,如Java、Python、Ruby,%
运算符直接对浮点数进行运算。@Newacct:请告诉我(模10.5)
的答案是什么。Scheme函数模
对非整数不起作用;有些函数可以处理非整数,比如R6RS中的flmod
,它将返回0.5。@Newacct:我同意当10.5除以5时,0.5是余数,因为余数是非零的,所以我们可以说5不除以10.5。但它不是数学中定义的模。将“余数”和“模”这两个词混为一谈是没有帮助的。我编辑了我的回答,以提供回答原始海报问题的代码。如果C标准库函数fmod
与单词“modulo”无关,为什么它被称为什么?