Ste*_*non 5

以二进制表示的数字2.01是:

b10.00000010100011111100001010001111110000101000111111000010100011111100...
Run Code Online (Sandbox Code Playgroud)

计算机仅使用有限数量的数字来存储浮点值,但2.01的二进制表示需要无限多个数字; 结果,它四舍五入到最接近的可表示值:

b10.000000101000111111000010100011111100001010001111110
Run Code Online (Sandbox Code Playgroud)

用十进制表示,这个数字正是:

2.0099999999999997868371792719699442386627197265625
Run Code Online (Sandbox Code Playgroud)

当你打印出来时,它会再次四舍五入到十七个十进制数字,给出:

2.0099999999999998
Run Code Online (Sandbox Code Playgroud)