价值代表问题

时间:2014-07-11 23:26:30

标签: c++

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;
}

谢谢大家!我得到了它的工作。

2 个答案:

答案 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";