首页 >后端开发 >C++ >为什么 C 中的整数除法存储在 Double 变量中时结果为零?

为什么 C 中的整数除法存储在 Double 变量中时结果为零?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-03 11:35:10999浏览

Why Does Integer Division in C   Result in Zero When Stored in a Double Variable?

整数除法在双变量中产生令人惊讶的零

在尝试计算简单除法(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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn