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…”区分开来。
我只是随机尝试不同的浮点数到字符串的转换,其中我发现了以下问题:
str(123456789.123456789)
返回
'123456789.12345679'
缺少 8。这是内存问题还是我在这里不理解什么?
尝试在 Python 控制台中直接输入您用作示例的浮点数:您会看到它打印为 123456789.12345679
而不是 123456789.123456789
。这只是一个四舍五入的问题。
某些 Python 实现中的默认浮点格式化行为现在是根据需要生成尽可能多的数字,以唯一区分所表示的数字。在最常用的浮点格式中,123456789.123456789 不能精确表示。当在源文本中遇到此数字时,会将其转换为最接近的可表示值,123456789.12345679104328155517578125.
然后,当将其格式化为字符串时,将打印“123456789.12345679”,因为较少的数字无法将其与附近的可表示值区分开来,例如 123456789.123456776142120361328125,不需要更多的数字,因为“...79”足以将它与它的两个邻居“…77…”和“…80…”区分开来。