Обрезать до трех знаков после запятой в Python - PullRequest
34 голосов
/ 22 декабря 2011

Как мне получить 1324343032.324?

Как вы можете видеть ниже, следующее не работает:

>>1324343032.324325235 * 1000 / 1000
1324343032.3243253
>>int(1324343032.324325235 * 1000) / 1000.0
1324343032.3239999
>>round(int(1324343032.324325235 * 1000) / 1000.0,3)
1324343032.3239999
>>str(1324343032.3239999)
'1324343032.32'

Ответы [ 13 ]

0 голосов
/ 14 октября 2017

После поиска способа решения этой проблемы, без загрузки какого-либо модуля 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)

# Testing the 'trunc_num()' function
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)]
0 голосов
/ 05 апреля 2017

Вы также можете использовать:

import math

nValeur = format(float(input('Quelle valeur ?    ')), '.3f')

В Python 3.6 это будет работать.

0 голосов
/ 18 марта 2017
>>> float(1324343032.324325235) * float(1000) / float(1000)

1324343032.3243253

>>> round(float(1324343032.324325235) * float(1000) / float(1000), 3)

1324343032.324
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...