Probar una problema de encontrar los primeros dígitos k de un num^num escribí el mismo programa en C++ y PythonC++ vs precisión 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
Entrada
19423474 9
O utput
C++ > 163074912
Python > 163074908
Revisé los resultados que la solución C++ es la correcta. Lo comprobé en http://www.wolframalpha.com/input/?i=19423474&19423474
¿Alguna idea de cómo puedo obtener la misma precisión en Python?
EDIT: Sé acerca de los paquetes de la biblioteca externa para obtener esta precisión, pero cualquier solución NATIVA ???
Es curioso que son diferentes del todo, ya que se podría pensar que los dos están usando la misma biblioteca de matemáticas básicas (math.h), los mismos subyacentes co-procesadores, y el mismo subyacente IEEE 754 estándar. Pero quizás Python reescribió su propia torre numérica. –
Wolfram alpha dice que los últimos dígitos son 2826110976, que es el resultado de ninguno de sus códigos C++ o Python. –
@sharth: está enumerando los * primeros * pocos dígitos, no los * últimos * pocos. –