为什么我在vs2013 c++中用float定义变量,输出的结果的有效数字有的只有5位? C++中float,double到底保留几位有效数字

c++\u4e2dfloat\u5b9a\u4e49\u7684\u65700.0 \u8f93\u51fa\u7ed3\u679c\u4e3a\u4ec0\u4e48\u662f0\uff1f

C/C++ \u4e2d\u5b9a\u4e49\u5b9a\u4e49float\u578b0.0\uff0c\u5982\u9884\u4f7f\u8f93\u51fa\u7ed3\u679c\u4e3a0.0, \u53ef\u8bbe\u7f6e\u8f93\u51fa\u683c\u5f0f\uff0c\u5982
////
int main(void )
{
//..
float fIndex = 0.0;
printf("%2.1f", fIndex);
// ...
return 0;
}
[\u5907\u6ce8] printf\u683c\u5f0f\u8f93\u51fa\u4e2d,%2.1f \u8868\u793a \u6d6e\u70b9\u578b\u6570\u503c\u8f93\u51fa2\u4e2a\u6709\u6548\u6570\u5b57\uff0c\u5176\u4e2d\u5c0f\u6570\u70b9\u540e\u9762\u53601\u4f4d\uff0c\u5373\u4fdd\u75591\u4f4d\u5c0f\u6570\u3002\u53ef\u901a\u8fc7\u8bbe\u7f6e\u8f93\u51fa\u683c\u5f0f\u5f97\u5230\u9884\u671f\u7684\u8f93\u51fa\u6548\u679c\u3002

float\u7cbe\u5ea6\u662f2^23\uff0c\u80fd\u4fdd\u8bc16\u4f4d\u3002double\u7cbe\u5ea6\u662f2^52\uff0c\u80fd\u4fdd\u8bc115\u4f4d\u3002\u4f46\u662f\u9ed8\u8ba4float\u548cdouble\u90fd\u53ea\u80fd\u663e\u793a6\u4f4d\uff0c\u518d\u591a\u9700\u8981#include \uff0c\u7136\u540e\u5728\u8f93\u51fa\u8bed\u53e5\u4e4b\u524d\u63d2\u5165cout << setprecision(20);\u5f3a\u5236\u8f93\u51fa\u5c0f\u6570\u4f4d\u3002

\u62d3\u5c55\u8d44\u6599
float\u4e0edouble\u7684\u8303\u56f4\u548c\u7cbe\u5ea6
1\u3001\u8303\u56f4
float\u548cdouble\u7684\u8303\u56f4\u662f\u7531\u6307\u6570\u7684\u4f4d\u6570\u6765\u51b3\u5b9a\u7684\u3002
float\u7684\u6307\u6570\u4f4d\u67098\u4f4d\uff0c\u800cdouble\u7684\u6307\u6570\u4f4d\u670911\u4f4d\uff0c\u5206\u5e03\u5982\u4e0b\uff1afloat\uff1a1bit\uff08\u7b26\u53f7\u4f4d\uff09 8bits\uff08\u6307\u6570\u4f4d\uff09 23bits\uff08\u5c3e\u6570\u4f4d\uff09double\uff1a1bit\uff08\u7b26\u53f7\u4f4d\uff09 11bits\uff08\u6307\u6570\u4f4d\uff09 52bits\uff08\u5c3e\u6570\u4f4d\uff09
\u4e8e\u662f\uff0cfloat\u7684\u6307\u6570\u8303\u56f4\u4e3a-127~+128\uff0c\u800cdouble\u7684\u6307\u6570\u8303\u56f4\u4e3a-1023~+1024\uff0c\u5e76\u4e14\u6307\u6570\u4f4d\u662f\u6309\u8865\u7801\u7684\u5f62\u5f0f\u6765\u5212\u5206\u7684\u3002\u5176\u4e2d\u8d1f\u6307\u6570\u51b3\u5b9a\u4e86\u6d6e\u70b9\u6570\u6240\u80fd\u8868\u8fbe\u7684\u7edd\u5bf9\u503c\u6700\u5c0f\u7684\u975e\u96f6\u6570\uff1b\u800c\u6b63\u6307\u6570\u51b3\u5b9a\u4e86\u6d6e\u70b9\u6570\u6240\u80fd\u8868\u8fbe\u7684\u7edd\u5bf9\u503c\u6700\u5927\u7684\u6570\uff0c\u4e5f\u5373\u51b3\u5b9a\u4e86\u6d6e\u70b9\u6570\u7684\u53d6\u503c\u8303\u56f4\u3002
float\u7684\u8303\u56f4\u4e3a-2^128 ~ +2^128\uff0c\u4e5f\u5373-3.40E+38 ~ +3.40E+38\uff1bdouble\u7684\u8303\u56f4\u4e3a-2^1024 ~ +2^1024\uff0c\u4e5f\u5373-1.79E+308 ~ +1.79E+308\u3002
2\u3001\u7cbe\u5ea6
float\u548cdouble\u7684\u7cbe\u5ea6\u662f\u7531\u5c3e\u6570\u7684\u4f4d\u6570\u6765\u51b3\u5b9a\u7684\u3002\u6d6e\u70b9\u6570\u5728\u5185\u5b58\u4e2d\u662f\u6309\u79d1\u5b66\u8ba1\u6570\u6cd5\u6765\u5b58\u50a8\u7684\uff0c\u5176\u6574\u6570\u90e8\u5206\u59cb\u7ec8\u662f\u4e00\u4e2a\u9690\u542b\u7740\u7684\u201c1\u201d\uff0c\u7531\u4e8e\u5b83\u662f\u4e0d\u53d8\u7684\uff0c\u6545\u4e0d\u80fd\u5bf9\u7cbe\u5ea6\u9020\u6210\u5f71\u54cd\u3002
float\uff1a2^23 = 8388608\uff0c\u4e00\u5171\u4e03\u4f4d\uff0c\u8fd9\u610f\u5473\u7740\u6700\u591a\u80fd\u67097\u4f4d\u6709\u6548\u6570\u5b57\uff0c\u4f46\u7edd\u5bf9\u80fd\u4fdd\u8bc1\u7684\u4e3a6\u4f4d\uff0c\u4e5f\u5373float\u7684\u7cbe\u5ea6\u4e3a6~7\u4f4d\u6709\u6548\u6570\u5b57\uff1bdouble\uff1a2^52 = 4503599627370496\uff0c\u4e00\u517116\u4f4d\uff0c\u540c\u7406\uff0cdouble\u7684\u7cbe\u5ea6\u4e3a15~16\u4f4d\u3002

cout中输出流的有效位数默认设置值6,当有效位末尾为0时,默认舍去。

求得b=138.23007,c=1520.5308,
保留6位后b=138.230,c=1520.53,
b末位为0,舍去,b=138.23;c末尾非0,不处理。

所以,b显示为138.23,c显示为1520.53。

扩展阅读:2013奔驰c180l报价及图片 价格 ... office 2013 ... 2013年奔驰c200 ... 2013年长城c50 ... vs2013怎么创建c语言项目 ... 2013款奔驰c180 ... c上m下n公式 ... vs2019 c#安装勾选哪些 ... vs2013怎么创建c语言程序 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网