por*_*ton -1 floating-point precision floating-accuracy
我的问题被标记为/sf/answers/1541674291/的副本,但它不是重复的.这个问题涉及不精确代表的情况,而我的问题是关于特殊情况下的确切表示
在Python 3会话中:
>>> 0.1*3/3
0.10000000000000002
>>> 12.34567
12.34567
Run Code Online (Sandbox Code Playgroud)
第一次计算产生不准确的结果.(我明白为什么:这是因为浮点数是圆的.)
但是第二次计算(从小数部分切换到二进制FP然后返回)会产生精确的结果.
我的问题是为什么第二个结果(以及许多类似的"计算"仅涉及一个没有算术运算的FP数)是精确的(与Python会话中输入的相同)?
另外:两个小数的总和的准确性是什么(其指数差异不大)?
它不是"精确"... 12.34567没有二进制64的精确表示.但Python的浮点到字符串转换的默认规则与你输入的输入相同.如果你强迫它给你整个故事,它会揭示不精确性:
>>> '{:.500}'.format(12.34567)
'12.3456700000000001438138497178442776203155517578125'
Run Code Online (Sandbox Code Playgroud)