C语言浮点数精度问题:单精度(float)与双精度(double)的区别
C语言浮点数精度问题:单精度(float)与双精度(double)的区别
本示例展示了C语言中单精度浮点数(float)和双精度浮点数(double)在存储和打印时的精度差异。
#include <stdio.h>
void main()
{
float a = 0.12345678901234567890; double b = 0.12345678901234567890;
printf("a=%.30f\n", a); printf("b=%.30f\n", b);//f\n前面的数字是打印位数
}
运行一下内容:
a=0.123456791043281555175781250000
b=0.123456789012345678895654197693
从输出结果可以看出,单精度浮点数(float)的精度较低,只保留了部分小数位,而双精度浮点数(double)的精度更高,能够保留更多的小数位。
这是因为float和double的存储方式不同,float用32位存储,double用64位存储,因此double能够存储更多的小数位,精度更高。
在实际编程中,根据需要选择合适的浮点数类型,如果对精度要求较高,建议使用double类型。
原文地址: https://www.cveoy.top/t/topic/p3F1 著作权归作者所有。请勿转载和采集!