小数点输出位数的问题
要求对ans保留两位小数(四舍五入),想问一下为什么第一种写法不对,第二种对了?显示错误的写法:
if(ans*100-(int)(ans*100)>=0.5) ans+=0.01;
printf("%.2lf\n",ans);
显示正确的写法:
if(ans*100-(int)(ans*100)==0.5) ans+=0.001; //加上这一句是因为我发现当小数点后第三位是5,其余都是零的时候,
//没有四舍五入到第二位,麻烦大佬也解释一下,谢谢。
cout<<fixed<<setprecision(2)<<ans<<endl;