我知道这是一个常见的问题。 但是我找不到一个可靠的直接答案。
16 ^ 54 = 1.0531229167e+65 (this is the result I want)
当我使用pow(16,54)
,我得到:
105312291668557186697918027683670432318895095400549111254310977536.0
代码如下:
#include #include #include void main(){ double public; double a = 16; double b = 54; public = (pow(a,b)); printf("%.21fn", public); }
执行代码:
gcc main.c -lm
我做错了什么?
我究竟做错了什么?
几件事:
以下是修复程序的方法:
#include #include #include int main(){ double p; double a = 16; double b = 54; p = (pow(a,b)); printf("%.10en", p); return 0; }
在ideone上演示。
你有没有尝试过:
printf("%en", public);
%e
说明符用于科学记数法,如文档中所述
如果您需要科学记数法,则需要使用%e
格式说明符 :
printf("%en", public); ^^
此外, public
是C ++中的关键字 ,因此,如果此代码需要可移植,最好避免使用该关键字和任何其他关键字 。
需要了解更多c/c++开发分享为什么printf没有使用科学记数法?,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!
以上就是c/c++开发分享为什么printf没有使用科学记数法?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/979413.html