在寻找解决此问题的方法之后,无需加载任何Python 3模块或额外的数学运算,我仅使用str.format()e .float()解决了该问题。我认为这种方式比使用其他数学运算(例如最常用的解决方案)更快。我需要一个快速的解决方案,因为我使用非常大的数据集,因此在这里可以很好地工作。
def truncate_number(f_number, n_decimals):
strFormNum = "{0:." + str(n_decimals+5) + "f}"
trunc_num = float(strFormNum.format(f_number)[:-5])
return(trunc_num)
test_num = 1150/252
[(idx, truncate_number(test_num, idx)) for idx in range(0, 20)]
它返回以下输出:
[(0, 4.0),
(1, 4.5),
(2, 4.56),
(3, 4.563),
(4, 4.5634),
(5, 4.56349),
(6, 4.563492),
(7, 4.563492),
(8, 4.56349206),
(9, 4.563492063),
(10, 4.5634920634),
(11, 4.56349206349),
(12, 4.563492063492),
(13, 4.563492063492),
(14, 4.56349206349206),
(15, 4.563492063492063),
(16, 4.563492063492063),
(17, 4.563492063492063),
(18, 4.563492063492063),
(19, 4.563492063492063)]