float 到 str 的转换正在删除过程中的字符

Conversion of float to str is removing a character in the process

我只是随机尝试不同的浮点数到字符串的转换,其中我发现了以下问题:

str(123456789.123456789)

返回

'123456789.12345679'

缺少 8。这是内存问题还是我在这里不理解什么?

尝试在 Python 控制台中直接输入您用作示例的浮点数:您会看到它打印为 123456789.12345679 而不是 123456789.123456789。这只是一个四舍五入的问题。

某些 Python 实现中的默认浮点格式化行为现在是根据需要生成尽可能多的数字,以唯一区分所表示的数字。在最常用的浮点格式中,123456789.123456789 不能精确表示。当在源文本中遇到此数字时,会将其转换为最接近的可表示值,123456789.12345679104328155517578125.

然后,当将其格式化为字符串时,将打印“123456789.12345679”,因为较少的数字无法将其与附近的可表示值区分开来,例如 123456789.123456776142120361328125,不需要更多的数字,因为“...79”足以将它与它的两个邻居“…77…”和“…80…”区分开来。