C++与Python精度

2024-09-26 22:08:34 发布

您现在位置:Python中文网/ 问答频道 /正文

试着找出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

^{pr2}$

输入

19423474 9

输出

C++    > 163074912
Python > 163074908
检验结果,C++解是正确的。 检查时间:http://www.wolframalpha.com/input/?i=19423474^19423474

你知道如何在Python中获得同样的精度吗???在

编辑:我知道外部库包可以获得这种精度,但是有没有本地解决方案???在


Tags: 程序时间精度数字numlongdoubledigit
3条回答

一般来说,我会这样做。然而,对于您的示例数字来说,它的执行速度似乎不够快。在

num = 453
k = 9
result = num ** num

print str(result)[:k]
# Prints: '163111849'

正如您所发现的,Python float是引擎盖下的两倍。为了获得更好的浮点精度,必须使用C代码或外部库。在

{python有一个称为GMP'的python,它有一个很好的包装器

Decimal是一个内置的python类,它正确地处理浮点(作为base10,而不是ieee7somethingsthingsomething标准)。我不知道它是否支持对数等等。在

编辑:确实是support logarithms "and all that".

你也可以设置它的精度。默认值是28个位置,但它可以是任意大的。把它看作是小数的大整数。在

相关问题 更多 >

    热门问题