Nachdem ich nach einer Möglichkeit gesucht hatte, dieses Problem zu lösen, ohne ein Python 3-Modul oder zusätzliche mathematische Operationen zu laden, löste ich das Problem nur mit str.format () e .float (). Ich denke, dieser Weg ist schneller als die Verwendung anderer mathematischer Operationen, wie in der gängigsten Lösung. Ich brauchte eine schnelle Lösung, weil ich mit einem sehr sehr großen Datensatz arbeite und deshalb hier sehr gut funktioniert.
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)]
Es gibt die folgende Ausgabe zurück:
[(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)]