Python decimal.Decimal - getcontext (). Предварительная установка и количество десятичных знаков в выводе - PullRequest
0 голосов
/ 04 сентября 2018

Я хочу сделать арифметику с преобразованными числовыми строками, используя decimal. Decimal. Я хочу, чтобы возвращаемый результат имел два десятичных знака независимо от количества десятичных знаков, которые имеют преобразованные строки чисел.

В этом конкретном случае, почему две десятичные точности дают мне один десятичный возврат, и почему три десятичных точности дают мне желаемое возвращение (2 десятичных знака -> 2,15)

from decimal import *
getcontext().prec = 2
a = Decimal(x.replace(',','.'))
b = Decimal(y.replace(',','.'))
print(a), print(b), print(a-b)
>>> 2.60 0.45 2.2

getcontext().prec = 3
a = Decimal(x.replace(',','.'))
b = Decimal(y.replace(',','.'))
print(a, b, a-b)
>>> 2.60 0.45 2.15

1 Ответ

0 голосов
/ 04 сентября 2018

getcontext().prec устанавливает точность цифр, которую Десятичная lib будет использовать для возврата любого вычисленного числа, то есть prec = 2 вернет 2 цифры (первая = 2, вторая = 2) и в prec = 3, который покажет три числа (первое = 2, второе = 1, третье = 5).

Однако здесь есть хитрость. Когда вы создали переменные a и b, десятичная дробь использовалась как точность количества цифр от числа, которое вы ей дали. Вы можете видеть, что просто вызываете a или b в вашем IDLE.

...