C语言 VC++ 2008 表达式上的浮点乘法



为什么以下代码片段

int i = 30;
int p = 0.7f * i;
printf("p is %dn", p);

在 VC++ 2008 上给出 20 而不是 21 ? 我知道这是一个旧的编译器!

数字 0.7 不能以编译器用于float的基于二进制的浮点格式表示。当十进制数字"0.7"转换为float时,结果是最接近的可表示值。这个数字略低于0.7。

将其乘以 30 得到一个略低于 21 的数字,将其转换为带有截断的int得到 20。

相关内容

  • 没有找到相关文章

最新更新