c精度问题--为什么输入0.72时,系统却是0.719999999999……这是double型的变量

来源:百度知道 编辑:UC知道 时间:2024/06/04 17:23:08
RT

系统存储数的时候,都是用二进制来存储的
整数部分都可以用精确的二进制来存储
但是小数部分不一定
0.125,0.25,0.5这样的是2的幂的小数可以用二进制精确的表示,但是类似0.72这样的无法用精确的二进制来表示,所以只能用一个尽量接近于0.72的二进制数来代替0.72,所以表达double数的时候,可能只是一个近似值

double型的保留15位有效数字,所以,把三个有效数变成15个了,最后的那个9是无效的

double 型数精确到小数位后16位(包括小数点),当输入0.72时,要转换成double型所以这样啊。

printf("%.2lf",a);