10

这些线是一样的吗?

float a = 2.0f;

float a = 2.000000f;
4

4 回答 4

11

是的。无论您使用什么表示,在编译代码时,数字都会被转换为唯一的二进制表示。在现代计算机中用于表示数字2IEEE 754 binary32标准中只有一种表示方式。float

于 2013-01-05T03:05:50.017 回答
9

C99 标准对此事唯一要说的是(第 6.4.4.2 节):

对于十进制浮点常量...结果是最接近的可表示值,或者是与最接近的可表示值紧邻的较大或较小的可表示值,以实现定义的方式选择。

关于“实现定义”的那一点意味着从技术上讲,实现可以选择在每种情况下做不同的事情。尽管在实践中,像 2 这样的值不会发生任何奇怪的事情。

请务必记住,C 标准不需要 IEEE-754。

于 2013-01-05T03:16:08.453 回答
3

是的,它们是一样的。

简单检查: http ://codepad.org/FOQsufB4

int main() {
printf("%d",2.0f == 2.000000f);
}

^ 将输出 1(真)

于 2013-01-05T03:08:51.147 回答
1

是的,当然它是相同的,右边的额外零被忽略,就像左边的零一样

于 2013-01-05T03:06:43.873 回答