2015-02-23 4 views
1

пример, чтобы показать мою USECASE:Лучший способ печати десятичное число максимальной точностью без конечных нулей в Python

from __future__ import division 
a = 215/4 
print a # Case 1. Should print 53.75 

a = 215/3 
print a # Case 2. Should print 71.6666666666666714 i.e. decimal to 16 precision. 

Возможные решения, которые не работают:

print str(a) # Case 2 gets printed with only 12 precision (needed 16) 

print repr(a) # Case 2 gets printed as 71.66666666666667 (precision 14, needed 16) 

print '{0:.16f}'.format(a) # Case 1 gets printed with trailing zeroes 

print '{0:.16g}'.format(a) # Decimal precision is 14, needed 16. 

Что бы быть лучшим питоническое решение?

Edit: Если точность 16 является ограничением float деления, что было бы вещим способ получить 8 десятичного место точности. Есть лучшая солна. чем '{0:.8f}'.format(a).rstrip('0')?

+0

Точность не на самом деле 16 цифр, потому что, как вы можете видеть, она заканчивается в '714', что не является правильным. – MattDMo

+1

Почему вы хотите, чтобы 16 цифр отображались, когда поплавки на самом деле не имеют 16 цифр точности? – user2357112

+0

Означает ли это, что невозможно получить 18 значащих цифр (включая точность 16) с поплавковым делением? – prat0318

ответ

1

Я верю, что getcontext() будет вашим другом здесь, в десятичной библиотеке.

Это позволяет вам устанавливать точность и управлять значительными результатами фигур.

https://docs.python.org/2/library/decimal.html

+0

Это относится только к вычислениям, выполненным с помощью 'decimal.Decimal', и на самом деле ничего не делает для точности отображения. – user2357112

Смежные вопросы