a,b,c的输入为25,27.5,40。 应该显示的正确答案是754573.2,但我继续得到754573.17,尽管阅读有关如何解决这个问题。我也不允许使用setprecision()来解决问题。 我做错了什么?
#include <iostream>
using namespace std;
int main() {
double a, b, c;
double g;
double v;
double ci = 123.00;
double i = 15;
cout << "enter the 3 values: ";
cin >> a >> b >> c;
a = a * i;
b = b * i;
c = c * i;
v = a * b * c;
g = static_cast<int>(v / ci * 100 + .5) / 100.0;
cout << "The answer is " << g;
return 0;
}
谢谢大家!我得到了它的工作。
答案 0 :(得分:2)
cout正在使用默认精度,这就是输出四舍五入为5位的原因。
要看到这一点,请调用cout :: precision();
尝试的一个俗气的答案是使用sprintf:
char *result = char[256];
sprintf(&result, "%.2lf", g);
cout << result;
答案 1 :(得分:1)
int g = static_cast<int>(v / ci);
int h = static_cast<int>((100 * v / ci) + 0.5);
int i = h - g * 100;
cout << "The answer is " << g << "." << i << "\n";