C++规定double型的有效数字至少为10位(大多数编译器的精度比这高),cout默认输出6位,可以调用cout.precision(n);设置精度,也可以使用操作算子cout<<setprecision(n);来设置精度。
3.1415926作为字符串是9个字节,
但是作为double类型是用二进制表示的,8个字节一共64位二进制数,double的范围为-2^1024 ~ +2^1024,也即-1.79e+308 ~ +1.79e+308
d的问题不在于类型,而是在于3.1415926属于字面常量,字面常量是不区分类型的。只有变量才有类型的区分。