2011-01-18 9 views
12

Есть ли способ, которым я мог бы сделать decimal.Decimal по умолчанию для всех числовых значений в Python? Я хотел бы иметь возможность использовать Python таким же образом, как и программы bc и dc, без необходимости называть decimal.Decimal (...) для каждого числа.Выполнение decimal.Decimal числового типа по умолчанию в Python

EDIT: Для непосвященных: bc.

EDIT 2: Спасибо tokenize module..

+0

Вы говорите об обеспечении того, чтобы python выполнял арифметику с плавающей запятой вместо целочисленной арифметики? – seggy

+0

Возможно, вы могли бы взломать интерпретатор, чтобы сделать это, приложив много усилий. Но почему? Когда вы пишете программу Python, которая в любом месте нуждается в десятичной системе, просто используйте ее там - проще. Если вам нужны прецизионные десятичные знаки, используйте что-то, что обеспечивает его. (И @seggy: float! = Decimal !!) – delnan

+0

Да, я понял, что после того, как я разместил. Вы правы, похоже, не существует способа, который не связан с серьезной ошибкой с внутренними компонентами python. Путь больше усилий, чем выигрыш, будет стоить, ИМО. – seggy

ответ

4

Вы не можете делать то, что вы просите без некоторой серьезной магии, которую я не буду стараться коснуться в моем ответе, но есть по крайней мере, немного более легкий путь, чем делать decimal.Decimal(...)

from decimal import Decimal as D 
num = D("1") + D("2.3") 

Edit: используйте более короткую форму из комментария.

+4

'from decimal import Decimal as D' – marcog

+1

Ну да, я не могу этого сделать, но я искал то, что не требовало явного действия для каждого числа. –

+2

Также, это будет больше похоже на 'D (" 2.3 ")', поэтому я не теряю точность. –