请教一下关于浮点数储存的问题。
网上已经看过相关内容。
但我自己在验证的时候总是自己计算出的二进制和计算机输出的二进制不相同。
即便数字,过程,结果和别人帖子一样,但计算机给出的二进制也不同。
例子:十进制:8.25
转化为二进制:1000.01
写为二进制的科学计数法:1.00001 x 2 ^ 3
由 3 + 127 得到指数位为 130,转化为二进制得:1000 0010
到这里就可以知道,
符号位:0 ;指数位:1000 0010;尾数位:0000 1000 .... ....
如果用 float,32位,写出来应该是:
0100 0001 0000 1000 0000 0000 0000 0000
转化为16进制也就是41080000
问题出现在这里。
我的操作是:
float a = 8.25;
printf("%I64x",a);
结果输出的是4020800000000000
请问为什么会不一致呢?
感谢。