为什么Matlab在输入1-10 ^( - 16)时会显示1.0000,而在输入1-10 ^( - 17)时会显示1?浮点治疗有什么不同或者其他什么?提前致谢
答案 0 :(得分:3)
基本上,MATLAB只能存储16位有效数字。
MATLAB使用IEEE 754 double-precision floating point个数字,可以代表~16个十进制数字。在此格式中,1-10 ^ -16存储为:
0x3fefffffffffffff
此后的下一个双重是:
0x3ff0000000000000
恰好是1
。换句话说,MATLAB不可能准确地表示1-10^17
,因此它将它舍入到它可以表示的最接近的数字,结果是1
。