C++ 四舍五入双小数点
这使我的差异为0.6,但我需要它为0.60(两个小数点)C++ 四舍五入双小数点,c++,rounding,C++,Rounding,这使我的差异为0.6,但我需要它为0.60(两个小数点) 有人能帮我一下吗?双精度的值是0.6,因为0.6和0.60(数学上)是一样的。您需要的是在打印值时设置精度,而不是在计算值时设置精度 这可以通过使用 double x = 9.29; double y = 8.69; double diff = floor((x - y)*100+0.5)/100.0; 如果你使用C++,你应该做类似的事情: printf("%.2f\n", diff); precision功能确定插入操作上写入的
有人能帮我一下吗?双精度的值是0.6,因为0.6和0.60(数学上)是一样的。您需要的是在打印值时设置精度,而不是在计算值时设置精度 这可以通过使用
double x = 9.29;
double y = 8.69;
double diff = floor((x - y)*100+0.5)/100.0;
<>如果你使用C++,你应该做类似的事情:
printf("%.2f\n", diff);
precision
功能确定插入操作上写入的最大数字数,以表示浮点值。因此,如果您执行此代码,您将得到
printf("%.2e\n", diff);
0.60
如果你把预言设定为3,你会得到
printf("%.2e\n", diff);
0.60
我试过这些解决办法,但效果不太理想。我有过类似的经历
0.600
你以后能打印这个吗?那时0.6和0.60会产生不同。在这种情况下,打印方式会对哪个答案更好产生影响。我想将其存储在diff变量中。diff是一个双精度变量,0.60和0.6仅在打印或格式化为字符串时不同。因为diff是一个双精度变量,所以-->printf(“%.2f\n”,diff)代码>导致警告。您应该编写%.2e
/%.2e
或%.2lf
cout << "balance owing: " << balOwed[i] << endl;
cout.presicion(2);
cout << "balance owing: " << balOwed[i] << endl;
cout.setf(ios::fixed);
cout.precision(2);
cout << "balance owing: " << balOwed[i] << endl;