尝试查找 num^num 的前 k 位数字的问题我用 C++ 和 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
Input
19423474 9
Output
C++ > 163074912
Python > 163074908
我检查了结果,C++ 解决方案是准确的。
检查过http://www.wolframalpha.com/input/?i=19423474^19423474
知道如何在 Python 中获得相同的精度吗???
编辑:我知道外部库包可以获得这种精度,但有任何原生解决方案吗???
Decimal
是一个内置的 python 类,可以正确处理浮点(以 10 为基数,而不是 IEEE 7somethingsomething 标准)。我不知道它是否支持对数等等。
编辑:确实如此支持对数“等等”。 http://docs.python.org/library/decimal.html#decimal-objects
您也可以设置它的精度。默认为 28 个位置,但可以根据需要设置任意大小。将其视为小数的 BigInt。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)