Как установить десятичную точность во всем мире на питоне, не набирая десятичную ()?

Чтобы установить из десятичного импорта Decimal , getcontext ; getcontext (). prec = 20 точность я могу написать:

Decimal(some number)

а затем использовать:

float

Хорошо. Но очень утомительно писать Decimal каждый раз, особенно если у вас есть много номеров для работы. Как установить python таким образом, чтобы он всегда учитывал каждое число в коде с указанным числом десятичной точности?

python,decimal,global,precision,

0

Ответов: 1


3 принят

Вы действительно не должны. Разница между Decimalи Decimalочень важна, и вы не хотите скрывать это отличие от читателей вашего кода.

Если вы используете огромное количество Decimalконстант, некоторым людям нравится делать это:

from decimal import Decimal as D

c0 = D('273.15')
f0 = D('491.67')
c_ms = D('299792485')
# etc.

Еще один трюк, который я видел изредка, - это создать блок констант в массе:

constants = '''
   273.15 # c0
   491.67 # f0
   299792485 # c_ms
'''
constants = (line.split('#', 1)[0].strip() for line in constants.splitlines())
c0, f0, c_ms = (Decimal(line) for line in constants if line)

Если вы действительно хотите нажать его, вы можете разобрать имена и использовать globals()[name]их, чтобы настроить их, но это довольно неприятно.

Если вы хотите пойти по-настоящему сверху, вы можете написать крюк импорта, который изменяет каждый поток с плавающей точкой в ??конструктор Decimal. Этот проект является отправной точкой, хотя IIRC работает только в Python с 3.3 до 3.5 или около того из коробки.

Но на самом деле, вероятно, лучше всего просто заставить ваш редактор или IDE помочь вам. Это делает код более простым для записи, не делая его более трудным для чтения или введения в заблуждение.

питон, десятичная, глобальная, точность,
Похожие вопросы