C语言double与float的区别
float : 单精度浮点数。 double : 双精度浮点数。
两者的主要区别如下:
一、在内存中占有的字节数不同
单精度浮点数在机内存占4个字节。
双精度浮点数在机内存占8个字节。
二、有效数字位数不同:
单精度浮点数有效数字7位。
双精度浮点数有效数字16位。
三、数值取值范围:
单精度浮点数的表示范围:-3.40E+38~3.40E+38。
双精度浮点数的表示范围:-1.79E+308~-1.79E+308。
但double消耗内存是float的两倍,而且double的运算速度比float慢得多
因此 一般情况下能用单精度时不要用双精度。
简单来说,float 为单精度,内存中占 4 个字节,有效数位是 7 位(因为有正负,所以不是8位),而double为 双精度,占 8 个字节,有效数位是 16 位。
输出时的小数点位数控制
形式为:
printf("%m.nf", a);
其中 “n”为希望保留的小数点位数例如“%.2f”即为保留小数点后两位。
#include <stdio.h> int main(){ float a = 3.1415926; printf("%.2f", a); }
其次 “m”意为输出的小数所占列数,例如“%7.2f”即为输出共占7列(右对齐)。
另:“m”前加“+”,“-”号分别表示右对齐和左对齐,在规范输出时用到。
#include <stdio.h> int main(){ float a = 3.1415926; printf("%7.2f\n", a); printf("%7.3f\n", a); printf("%7.4f\n", a); }