#include
#include
using namespace std;
int main()
{
double lfOut=(4.1*3.0*2.5*0.65-1)*2; //37.975
double lfOut2=37.975;
printf("%.2f\n",(double)(37.975)); //输出37.98,有进位
printf("%.2f\n",lfOut); //输出37.97,无进位,为什么?
printf("%.2f\n",lfOut2); //输出37.98
cout<<"lfOut:"<<lfOut<<endl; //输出37.975
}
上面通过表达式计算出来37.975使用 "%.2f"输出时,为什么没有进位呢?
float精度只有6位,如果你个位数只有1位,就可以保证小数点后两位了,而double有16位精度,故可以保证小数点后几位。
lfOut 37.974999999999994 double 四舍五入,结果是37.97
数据是37.97499999999