Decimal Float Missing Division(C ++)

时间:2016-06-11 22:53:29

标签: c++ variables codeblocks

我正在写一个简单的计算器程序。当我试图让它做一个产生十进制的除法问题,例如:1/4或10/3,它将它舍入到最接近的整数。我怎么能解决这个问题?

我有一个函数,它接受两个数字(x和y)和一个操作(op),并返回它们: int getAnswer(int x,int op,int y)

int getAnswer(int x, int op, int y)
{
     if (op == 1)
        return x + y;
     if (op == 2)
        return x - y;
     if (op == 3)
        return x * y;
     if (op == 4 && y != 0)
        return x / y;
     if (op == 4 && y == 0)
        return 3293; //When 3293 is returned, an error is displayed (not the best way to handle errors, I know)
     return 3293;
}

当我输入x为10时,例如,y为3,op为4(对于除法),则返回10/3。我的main函数将返回值赋给变量“result”。我的主要:

int main()
{
    int input1 = getValueFromUser();
    int op = getOperationFromUser();
    int input2 = getValueFromUser();
    int result = getAnswer(input1, op, input2 );
    printResult(result);
    std::cin.ignore();
    std::cin.get();
    return 0;
}

我的printResult函数然后使用std :: cout打印结果,但不打印3.33,它打印3.因此,这导致我得出结果变量结果,没有小数点。如何使变量结果具有小数点?

以防万一,我的printResult函数如下所示:

void printResult(int result)
{
    if (result != 3293)
    {
        std::cout << "The answer is: " << result << std::endl;
    }
    else
    {
        std::cout << "ERR: Can't Calc" << std::endl;
    }
}

3 个答案:

答案 0 :(得分:1)

你需要将你的注意力加倍:

在你的getAnswer函数中:

if (op == 4 && y != 0)
        return static_cast<double>(x) / y;

还要确保你的getAnswer函数返回double ...

你的结果值也需要加倍,打印功能应该加倍等等。

答案 1 :(得分:1)

使用int您无法处理浮点数,请使用float或double。 您可以将int转换为浮动以进行除法。

ToString()

答案 2 :(得分:1)

您需要double类型才能正确显示分区。否则它会四舍五入为整数值。例如4/3 = 1,而不是1.33333

double getAnswer(double x, int op, double y)
{
     if (op == 1)
        return x + y;
     if (op == 2)
        return x - y;
     if (op == 3)
        return x * y;
     if (op == 4 && y != 0)
        return x / y;
     if (op == 4 && y == 0)
        return 3293; //When 3293 is returned, an error is displayed (not the best way to handle errors, I know)
     return 3293;
}


int main()
{
    double input1 = getValueFromUser();
    int op = getOperationFromUser();
    double input2 = getValueFromUser();
    double result = getAnswer(input1, op, input2 );
    printResult(result);
    std::cin.ignore();
    std::cin.get();
    return 0;
}

void printResult(double result)
{
    if (result != 3293)
    {
        std::cout << "The answer is: " << result << std::endl;
    }
    else
    {
        std::cout << "ERR: Can't Calc" << std::endl;
    }
}