Crtl + 1 является моим фаворитом. Быстрые исправления для красных загогулин.
Это также расположено в Меню Редактирования-> Быстрое исправление.
Python имеет встроенную библиотеку для вычислений произвольной точности: Decimal. Например:
>>>from decimal import Decimal, getcontext
>>>getcontext().prec = 50
>>>x = Decimal(1)/Decimal(7)
>>>x
Decimal('0.14285714285714285714285714285714285714285714285714')
>>>str(x)
'0.14285714285714285714285714285714285714285714285714'
См. Документацию Python Decimal для получения дополнительных сведений. Вы можете установить нужную точность.
С gmpy :
>>> import gmpy
>>> thefraction = gmpy.mpq(1, 7)
>>> hiprecfloat = gmpy.mpf(thefraction, 256)
>>> hiprecfloat.digits(10, 50, -10, 10)
'0.14285714285714285714285714285714285714285714285714'
>>>
Вы не можете сделать это с обычными числами с плавающей запятой - им просто не хватает точности для 50 цифр! Я полагаю, что есть способ сделать это (в версии 2.6 или выше) с помощью fractions.Fraction
, но я не знаком ни с каким другим способом отформатировать его, кроме как '1/7'
(не очень полезно в вашем случае! -).
Использование Perl (потому что я не могу писать на Python; -):
use strict; use warnings;
use integer;
my $x = 1;
my $y = 7;
for (1 .. 50) {
$x *= 10 if $x < $y;
my $q = $x / $y;
$x -= $q * $y;
print $q;
}
print "\n";
14285714285714285714285714285714285714285714285714
Как вы можете проверить вручную, цифры повторяются. Печать с использованием «%. 50f»
даст вам иллюзию большей точности.
Вы можете умножить числитель на большое 10 ^ N и придерживаться целых чисел произвольной точности.
РЕДАКТИРОВАТЬ
то есть:
> def digits(a,b,n=50): return a*10**n/b
.
> digits(1,7)
14285714285714285714285714285714285714285714285714L
Целые числа Python имеют произвольную точность. Поплавки Python никогда не бывают произвольной точностью. (вам нужно будет использовать Decimal, как указал другой ответ)