Python 将十进制值字符串转换为数字,不进行四舍五入

Python 将十进制值字符串转换为数字,不进行四舍五入,python,python-3.x,pandas,Python,Python 3.x,Pandas,这些数字在CSV文件中以字符串形式出现,我希望读取它们并执行数学运算,但当我读取它们时,它将被读取为字符串,当我将其转换为数字形式时,它将被舍入 如何在不降低精度的情况下将其转换为数值 编辑: 0.03611642492570208 这是我的csv文件的格式,当我在jupyter笔记本中读取它时,deal_probability下的值在小数点后四舍五入到6位 预期结果:-我想读取整个csv,而不改变交易概率下的值是的,您应该使用。为了将字符串转换为十进制,首先要导入decimal,然后像这样将

这些数字在CSV文件中以字符串形式出现,我希望读取它们并执行数学运算,但当我读取它们时,它将被读取为字符串,当我将其转换为数字形式时,它将被舍入

如何在不降低精度的情况下将其转换为数值

编辑:

0.03611642492570208
这是我的csv文件的格式,当我在jupyter笔记本中读取它时,deal_probability下的值在小数点后四舍五入到6位

预期结果:-我想读取整个csv,而不改变交易概率下的值

是的,您应该使用。为了将字符串转换为十进制,首先要导入decimal,然后像这样将字符串传递给decimal函数

 item_id,deal_probability
 6544e41a8817,0.299918385137877
 65b9484d670f,0.09258187813010357
 8bab230b2ecd,0.15371873083249338
 8e348601fefc,0.07208665773638352
 8bd2fe400b89,0.25543690938853253
 c63dbd6c657f,0.05238764253800446
 6d1a410df86e,0.0512983797826358
 e8d3e7922b80,0.009989860172001194
 2bc1ab208462,0.04119998171932098
然后,您可以像处理任何其他数字类型一样对十进制数执行操作

是的,您应该使用。为了将字符串转换为十进制,首先要导入decimal,然后像这样将字符串传递给decimal函数

 item_id,deal_probability
 6544e41a8817,0.299918385137877
 65b9484d670f,0.09258187813010357
 8bab230b2ecd,0.15371873083249338
 8e348601fefc,0.07208665773638352
 8bd2fe400b89,0.25543690938853253
 c63dbd6c657f,0.05238764253800446
 6d1a410df86e,0.0512983797826358
 e8d3e7922b80,0.009989860172001194
 2bc1ab208462,0.04119998171932098

然后,您可以像处理任何其他数字类型一样对十进制数执行操作

十进制模块对此很有帮助-


十进制模块对此很有帮助-


我们不必担心,因为这是四舍五入到6位数字只为屏幕显示的目的。如果我们保存文件,我们会看到数字仍然存在

如果我们绝对想强迫熊猫把这一列读作数字,那么我们可以这样做

from decimal import *
a = Decimal('0.03611642492570208')
print(a) # 0.03611642492570208
print(a + 1) # 1.03611642492570208
print(a + Decimal(1.1)) # 1.136116424925702168817841970

信用证:

我们无需担心,因为这四舍五入到6位仅用于屏幕显示。如果我们保存文件,我们会看到数字仍然存在

如果我们绝对想强迫熊猫把这一列读作数字,那么我们可以这样做

from decimal import *
a = Decimal('0.03611642492570208')
print(a) # 0.03611642492570208
print(a + 1) # 1.03611642492570208
print(a + Decimal(1.1)) # 1.136116424925702168817841970

信用证:

可能的副本请查看该模块。我做了必要的更改以给出详细解释。小数点后6位不是数据的存储方式。它被存储为
float
,我相信64位float应该具有16位小数精度。你能更精确一点吗?你需要精确到任意小数点还是有最小值?使用
decimal进行计算。decimal
效率低下。可能与的重复。请查看模块。我进行了必要的更改以给出详细解释。小数点后6位不是数据的存储方式。它被存储为
float
,我相信64位float应该具有16位小数精度。你能更精确一点吗?你需要精确到任意小数点还是有最小值?使用
decimal.decimal
进行计算效率较低。还应注意的是,与
decimal.decimal
相比,
float
值的计算效率更高。后者只能作为最后手段使用。64位浮点提供约16位小数精度,而不是任意精度。还应注意的是,
float
值与
decimal.decimal
相比,计算效率更高。后者只能作为最后手段使用。64位浮点提供大约16位小数点的精度,而不是任意精度。