C++visual6.0初学者的疑惑

![图片说明](https://img-ask.csdn.net/upload/201511/21/1448074758_77696.png)图片说明

在运行框里dNum1为什么都是6位小数?双精度的有效数字不是15~16位吗

还有编辑的%5.2lf\n这个。。之前我记笔记老师说5代表输出结果时空五个空格,但是并没有。书上解释是整个浮点数输出为5位。不明白什么什么意思。
我把5换成大于10的数字的时候在输出结果时就有空格了,是什么原因造成了修饰符失效?

图片说明

没有输出五个空格的原因是因为25.00已经占了五个位置了啊。

关于浮点数问题。浮点数只是定义了数字有多长,32位。但没有没有定义小数有多长,精确到后六位是默认的,跟编译器有关。别的编译器就不是六位了,比如VB,很长的小数呢。其实浮点数就是32位,如果小数部分过长,那就意味着整数部分就短了。小数占了16位的话,整数部分只能不超过16位。那么浮点数能表示的最大范围就大大减少了。编译器为了避免造成浮点数头重脚轻,所以默认精确六位。

默认情况下,输出显示的小数都是6位,跟精度是无关的。
%5.2lf
表示输出长度为5,其中两位整数,一位小数点,两位小数(共5位)
如果整个输出长度等于或者超过了5,不会补齐
如果整个输出长度小于5,则会出现补齐格式
此时,25.00长度正好是5了
如果设置成10,表示七位整数,一位小数,两位小数
这样25.00长度不够,自然会出现补齐了