我的程序从文件中断函数,比如
( 10 (print "+1/+0 = " (/ (+ 1) (+ 0))))
( 11 (print "-1/+0 = " (/ (- 1) (+ 0))))
除了我的程序崩溃
/: division by zero
context...:
我知道我可以将0.0添加到0,但还有另一种方法可能更简单吗?
答案 0 :(得分:1)
好吧,你可以处理错误并显示一条消息......
(with-handlers ([exn:fail? (lambda (exn)
(printf "+1/+0 = +inf.0"))])
(printf "+1/+0 = ~s" (/ (+ 1) (+ 0))))
...或者您可以转换每个数字以确保使用浮点除法:
(printf "+1/+0 = ~s"
(/ (exact->inexact (+ 1)) (exact->inexact (+ 0))))
但为什么要这么麻烦?如果您知道整数除以零并且 会使程序崩溃,那么请确保在输入中直接使用浮点除法文件:
(printf "+1/+0 = ~s" (/ (+ 1.0) (+ 0.0)))
上述任何选项都会打印相同的结果:
+1/+0 = +inf.0