【发布时间】:2015-08-30 09:05:00
【问题描述】:
在 C 中,double 比 float 具有更高的精度,并且根据“C primeplus 第六版”一书(第 80 页),float 可以表示至少 6 个有效数字,double 可以表示至少 13 个有效数字。所以我试着用这个简单的例子来验证:
#include<stdio.h>
int main(void){
float a = 3.3333333; // 7 significant digits
double b = 3.33333333333333;// 14 significant digits
printf("\nFloat: %f\n", a);
printf("Double: %f\n", b);
return 0;
}
这是这个程序的输出:
Float : 3.333333
Double: 3.333333
为什么双精度值与浮点值具有相同的精度,而不是显示更多有效数字?
【问题讨论】:
-
根据cplusplus.com/reference/cstdio/printf,默认打印小数点后位数为6。
-
3.3333333有 8 位有效数字,就像33.333333、333.33333、3333.3333等。这就是它的工作原理。 -
谢谢你们的帮助
-
double有 at least 10 有效十进制数字,而不是 13。long double相同,可以与double相同。