округление до $ 0,01 в питоне - PullRequest
5 голосов
/ 09 января 2012

Я работаю над программой, которая хранит числа в виде чисел с плавающей точкой, которые я в конечном итоге записываю в файл в виде валюты.В настоящее время я использую функцию round () для округления до 2 десятичных знаков, но бизнес-сфера хотела бы, чтобы я округлил до следующего пенни независимо от того, какой третий десятичный.Например:

x = 39.142

В этом случае я пытаюсь получить х округлить до 39,15.Очевидно, что когда я выполняю функцию округления, я получаю 39,14 ...

>>> round(x, 2)
    39.14

Есть ли способ, которым я всегда могу округлить до следующей копейки?Я должен отметить, что числа, с которыми я имею дело, печатаются в файл как валюта.

Ответы [ 2 ]

14 голосов
/ 09 января 2012

Использование десятичного модуля :

import decimal
D = decimal.Decimal
cent = D('0.01')

x = D('39.142')
print(x.quantize(cent,rounding=decimal.ROUND_UP))
# 39.15

Десятичные дроби имеют много вариантов округления.Варианты и их значения можно найти здесь .

1 голос
/ 09 января 2012

Если вы хотите записать это в центах, вы можете использовать int (x * 100 + .5), чтобы получить целое число центов из числа с плавающей запятой.

...