double的输出有争议(读入没有):

大体来说,网上流传三种版本,如下:

①float用%f,double用%lf

②float,double都用%f   %f是标准的格式,而%lf则是为了照应习惯

③printf有所谓的“默认参数提升”规则,float会被提升为double,所以printf输出的浮点数只能见到双精度

刘汝佳解释:C99中,double的输出必须用%f,但是在C89和C++中都不必如此,都可以用%lf

printf(“%m.nf”,a);问题:

m是指输出浮点数的实际位数,即几列然并卵,原因会解释

应该注意的是,小数点也占一列(一位)

如果m小于等于a的实际位数,则按实际输出

如果m大于a的实际位数,则在a左边添空格(但如果是%0m.nf就添0)至位数达到m后输出

n是指精确到小数点后几位

如果n小于a实际小数点后的位数,应该是四舍五入(但不排除某些编译器偶尔出现直接切尾的情况)

如果n大于a实际小数点后的位数,在后面添0至小数点后n位

float和double的区别与联系

单精度占4字节,双精度占8字节

单精度有效数字七八位,双精度十五六位

单精度运算快,双精度范围大

%f默认输出6位小数

这俩精度再高,浮点数也不是小数,只是近似数

分类:

0 条评论

发表评论

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用*标注