int n;
cin>>n;
unsigned long long int a,s;
cin>>a;
s=(2*pow(10,n)+a);
但是当我给出像
n
或17
这样的大18
时,我的输出s
却没有达到预期的效果。见图像输出
例如:当
n=17
,a=67576676767676788
时,则为s=267576676767676800
,理想情况下应为2*10^17 + 67576676767676788
最佳答案
首先,您必须了解发生了什么。
double
,返回的值也是double
。 double
具有16个有效数字(以十进制表示)double
到long long int
的赋值转换时,将默默执行unsigned long long int
(如果此类型具有64位),则最大功率10为19 现在,如果超出此限制,则应使用外部库。
gmp
非常不错。如果可接受
unsigned long long int
范围的限制,则只需实现自己的幂函数即可。
关于c++ - 在C++中打印pow()函数的精确值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59688700/