整数除法在双变量中产生令人惊讶的零
在尝试计算简单除法(3/5)时,您可能会遇到意想不到的结果。尽管将结果存储在双精度变量中,但结果可能会不稳定地显示为零。为了解开这个谜团,让我们研究一下底层机制:
在提供的代码片段中,被除数 (3) 和除数 (5) 都是整数。默认情况下,C 将此除法解释为整数除法,它将结果向下舍入并丢弃小数部分。在这种情况下,3 除以 5 得到 0,正如整数除法中所预期的那样。
要纠正此问题并获得所需的浮点除法,我们需要确保至少有一个操作数表示为一个实数。这可以通过将“.0”附加到除数或被除数来实现:
double f = 3.0 / 5; // Explicitly making the dividend a real number // or double f = 3 / 5.0; // Explicitly making the divisor a real number
通过将其中一个操作数转换为实数,我们强制编译器执行浮点除法。这可确保保留小数部分,并将正确的结果(本例中为 0.6)存储在 f 变量中。
以上是为什么 C 中的整数除法存储在 Double 变量中时结果为零?的详细内容。更多信息请关注PHP中文网其他相关文章!