我正在写一个简单的计算器程序。当我试图让它做一个产生十进制的除法问题,例如: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;
}
}
答案 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;
}
}