Python 如何在不舍入的情况下截断浮点小数点?

Python 如何在不舍入的情况下截断浮点小数点?,python,pandas,dataframe,truncate,Python,Pandas,Dataframe,Truncate,我把经度和纬度放在两个相近的数据框中。如果我运行一个精确的相似性检查,例如 test_-similar=test1_-latlon.loc[~test1_-latlon['cr'].isin(test2_-latlon['cr'])] 我经常失败,因为很多数字在小数点后第五位都不正确。我想在第三个小数点后截断。我见过人的格式,所以它显示为截断,但我想改变实际值。使用round()对数据进行舍入,我会得到更多的错误,那么有没有一种方法可以在3个小数点后删除 按照建议,您可以执行以下操作: x =

我把经度和纬度放在两个相近的数据框中。如果我运行一个精确的相似性检查,例如

test_-similar=test1_-latlon.loc[~test1_-latlon['cr'].isin(test2_-latlon['cr'])]
我经常失败,因为很多数字在小数点后第五位都不正确。我想在第三个小数点后截断。我见过人的格式,所以它显示为截断,但我想改变实际值。使用
round()
对数据进行舍入,我会得到更多的错误,那么有没有一种方法可以在3个小数点后删除

按照建议,您可以执行以下操作:

x = 1.123456
float( '%.3f'%(x) )

如果需要更多的小数位数,只需将3与所需的任何数字一起更改。

您可能需要使用numpy.trunc:

import math

value1 = 1.1236
value2 = 1.1266

value1 = math.trunc(1000 * value1) / 1000;
value2 = math.trunc(1000 * value2) / 1000;

#value1 output
1.123

#value2 output
1.126
import numpy as np
import pandas as pd

df = pd.DataFrame([[1.2366, 1.2310], [1, 1]])
df1 = np.trunc(1000 * df) / 1000
print(df1, type(df1))
#        0      1
# 0  1.236  1.231
# 1  1.000  1.000 <class 'pandas.core.frame.DataFrame'>
将numpy导入为np
作为pd进口熊猫
df=pd.DataFrame([[1.2366,1.2310],[1,1]]
df1=np.trunc(1000*df)/1000
打印(df1,类型(df1))
#        0      1
# 0  1.236  1.231
# 1  1.000  1.000 

请注意,df1仍然是一个数据帧,而不是一个numpy.array

好的,是的,这些是我找到的大多数答案。我想知道是否有一些方法可以做到这一点,但这应该是目前的工作。非常感谢。首先:这将四舍五入到小数点后3位,而不是截断!除此之外,我们现在已经有了Python中的
f-strings
,因此
float(f“{x:.3f}”)
似乎更适合merelated:这是否回答了您的问题?与公认的答案相反,这实际上实现了OP的要求(“截止”,即截断到小数点后3位)。