为什么浮点数超出其范围时不会从负数开始?

A.s*_*lar 1 c floating-point

众所周知,当整数变量超出其范围时,它从负数的另一端开始.
例如

int a=2147483648;
printf("%d",a);
Run Code Online (Sandbox Code Playgroud)

输出:
-2147483648(正如我所料)

现在我尝试了相同的浮点数.
例如

float a=3.4e39;//as largest float is 3.4e38
printf("%f",a);
Run Code Online (Sandbox Code Playgroud)

OUTOUT:
1.#INF00(我期待一些负浮动值)

我没有完全得到上面的输出,但我知道它代表正无穷大.
所以我的问题就是它为什么不从另一端开始(负值如整数)?

Som*_*ude 5

浮点数以不同于整数的格式存储,并且不遵循相同的过度/不足流动机制.

更具体地讲,二进制位模式的21474836481000000000000000其在二补数系统(如用于几乎所有现代计算机的)是一样的-2147483648.

今天的大多数计算机都使用IEEE754格式来表示浮点值,这些处理的处理方式与普通整数完全不同.

  • @AsBhullar我还建议你阅读[每个计算机科学家应该知道的关于浮点算术的内容](http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html). (2认同)