【发布时间】:2015-03-13 07:57:31
【问题描述】:
太多次,我编写了诸如 double t = 7/8*pi 之类的代码,结果却发现,在那之后 t 等于 0。为什么?因为隐式转换为 int。通过重新排列数字 double t = 7*pi/8 可以获得正确的结果。现在提名人是双重的,没有转换发生。 (或双倍 t = 7d/8*pi 或 7f 或 7.0 或 ...)
问题是,弄错太直观了!
我该如何预防呢?将隐式转换完全转换为 int 是否有意义,我该怎么做?
【问题讨论】:
-
确实明智的语言通常为整数除法提供单独的运算符。 (Pascal,Algol68 DIV,也见
÷)。对语言开发人员的更多提示。