【发布时间】:2010-10-02 16:45:38
【问题描述】:
尝试查找 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
输入
19423474 9
输出
C++ > 163074912
Python > 163074908
我检查了结果,C++ 解决方案是准确的。 在 http://www.wolframalpha.com/input/?i=19423474^19423474
知道如何在 Python 中获得相同的精度吗???
编辑:我知道外部库包以获得这种精度,但任何 NATIVE 解决方案???
【问题讨论】:
-
奇怪的是它们完全不同,因为你会认为它们都使用相同的基本数学库 (math.h)、相同的底层协处理器和相同的底层IEEE 754 标准。但也许 python 重写了它自己的数字塔。
-
Wolfram alpha 表示最后几位数字是 2826110976,这不是您的 C++ 或 Python 代码的结果。
-
@sharth:他列出了前几个数字,而不是最后几个数字。
-
@Will Hartung:它们不同,因为 C 代码使用
long double,而 Python 使用普通 Cdouble。
标签: c++ python floating-point precision floating-accuracy