在python中分配和读取大数字会得到不同的结果

在python中分配和读取大数字会得到不同的结果,python,Python,我在处理一些数据,我必须给数据框中的一些值分配一个大数字。然后我试着读取这些值,但令人惊讶的是它们发生了变化。我知道事实上这不是一个打印显示问题,但它是不同的东西。以下是我得到的示例: x = 410121209151013.6360 print("%.5f" % x) 这就是我得到的: 410121209151013.62500 我做了一些测试,发现有一些数字限制,但不知道如何修复它。非常感谢您的帮助。浮点数学充满了与数字存储方式相关的危险(请参阅对问题的评论) 每当你

我在处理一些数据,我必须给数据框中的一些值分配一个大数字。然后我试着读取这些值,但令人惊讶的是它们发生了变化。我知道事实上这不是一个打印显示问题,但它是不同的东西。以下是我得到的示例:

x = 410121209151013.6360
print("%.5f" % x)
这就是我得到的:

410121209151013.62500

我做了一些测试,发现有一些数字限制,但不知道如何修复它。非常感谢您的帮助。

浮点数学充满了与数字存储方式相关的危险(请参阅对问题的评论)


每当你可以在整数空间中工作时,试着这样做,然后根据你认为合适的方式来表示数字(例如,你可以将它们乘以1000000,然后将单位从兆瓦特转换为百万瓦特)

这是否回答了你的问题?如果要获得准确的结果,请使用。您必须将数字作为字符串传递,否则在传递给Decimal对象之前会失去精度。感谢您的快速回复!我已经用integer尝试过了,但仍然是同一个问题:4101212091510136360-->4101212091510136320 4101212091510136601-->4101212091510136601-->任何时候——唉,当系统引入数字以及如何真正保存数字时,问题实际上都会发生(您可以用二进制表示它们,以查看它们的实际存储方式)-但是,请放心,您可能不需要这么多的准确性,即使它看起来是可用的!我在数据帧上使用滚动应用自定义函数,这允许我只返回一个值。我需要不止一个,所以我将我需要的所有信息合并到一个加密的数字中,这就是为什么我需要所有这些准确性。我不能返回int,因为数据中有一些nan,所以我使用float64。我可以通过运行滚动应用程序5次来修复我的问题,每次返回一个参数,但我的代码将花费5倍以上的时间。我想我得找个工作了。太残忍了,把南区过滤掉!简化这个问题可能是一个好问题,但是如果你可以分享的话!