在C中,double比float更精确,根据“C primerplus第六版”一书(第80页),浮点数可以代表至少6个有效数字,双数字可以代表至少13个有效数字。 所以我尝试用这个简单的例子validation:
#include int main(void){ float a = 3.3333333; // 7 significant digits double b = 3.33333333333333;// 14 significant digits printf("nFloat: %fn", a); printf("Double: %fn", b); return 0; }
这是该计划的输出:
Float : 3.333333 Double: 3.333333
为什么double值与float值具有相同的精度,而不是显示更多有效数字?
这样的大多数问题可以通过咨询C标准来回答:
每个转换规范都由’%’字符引入…之后依次出现以下内容:
…
描述f
说明符:
double参数应转换为“[ – ] ddd.ddd”样式的十进制表示法,其中基数字符后的位数等于精度规范。 如果缺少精度,则应视为6 。
因此,通过简单地使用%f
,您指示printf
打印后的六位数字.
。 如果要查看更多数字,则需要指定精度: %.15f
。
您需要显示更多有效数字。 如果你这样做:
printf("nFloat: %.20fn", a); printf("Double: %.20fn", b);
你会得到这个:
Float: 3.33333325386047363281 Double: 3.33333333333332992865
以上就是c/c++开发分享C中的浮动和双精度相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/519383.html