Пробуя проблему нахождения первых к цифры из NUM^NUM я написал ту же программу в C++ и PythonC++ против точности Python
C++
long double intpart,num,f_digit,k;
cin>>num>>k;
f_digit= pow(10.0,modf(num*log10(num),&intpart)+k-1);
cout<<f_digit;
Python
(a,b) = modf(num*log10(num))
f_digits = pow(10,b+k-1)
print f_digits
Ввод
19423474 9
O utput
C++ > 163074912
Python > 163074908
Я проверил результаты, решение C++ является точным. Проверено на http://www.wolframalpha.com/input/?i=19423474^19423474
Любая идея, как я могу получить такую же точность в Python ???
EDIT: Я знаю о пакетах внешней библиотеки, чтобы получить эту точность, но любое решение NATIVE ???
Любопытно, что они отличаются на всех, так как вы могли бы подумать, что они оба используют ту же базовую математическую библиотеку (math.h), одни и те же базовые сопроцессоры, и тот же базовый IEEE 754 стандарт. Но, возможно, питон переписал свою собственную числовую башню. –
Wolfram alpha говорит, что последние несколько цифр - 2826110976, что не является результатом ни вашего C++, ни кода Python. –
@sharth: он перечисляет * первые * несколько цифр, а не * последние * несколько. –