【问题标题】:Modulo in simple calculator [duplicate]简单计算器中的模数[重复]
【发布时间】:2020-11-22 20:23:37
【问题描述】:

我有一个简单的 c++ 计算器,但我还想为十进制除法添加 % 操作。我想添加5个函数,加法,除法,乘法,减法。一切正常,但十进制除法没有。尝试编译时出现错误。这是我的代码:

# include <iostream>
# include <cmath>
# include <cstdio>
using namespace std;

int main()
{
    char operation;
    float number1, number2;
    float fmod;
    cout << "Enter operation +, -, *, / : ";
    cin >> operation;

    cout << "Enter two numbers: ";
    cin >> number1 >> number2;
    

    switch(operation)
    {
        case '+':
            cout << number1+number2;
            break;

        case '-':
            cout << number1-number2;
            break;

        case '*':
            cout << number1*number2;
            break;

        case '/':
            cout << number1/number2;
            break;
        
        case '%':
            cout << number1%number2;
            break;
            
        default:
            cout << "err";
            break;
    }
    return 0;
    
}

谁能解释我如何添加这个功能?

【问题讨论】:

  • 你得到的错误是什么?
  • 到底是什么问题?全部打开时是否收到任何编译器警告?
  • "37 26 C:\Users\Admin\Desktop\calc.cpp [错误] 'float' 和 'float' 类型的无效操作数到二进制 'operator%'"
  • 这应该回答你的问题:stackoverflow.com/questions/6102948/…

标签: c++ math calculator


【解决方案1】:

模运算符不能与浮点数一起使用。你可以这样做:

case '%':
    cout << fmodf(number1, number2);
    break;

但请注意,在计算器上使用浮点数的模数并不常见。所以你可以做的另一件事是对数字进行四舍五入:

case '%':
    cout << (int)roundf(number1) % (int)roundf(number2);
    break;

【讨论】:

  • “不常用浮点数取模”fmod 还有什么用处?
  • 如果我想在除法中得到几个小数位怎么办?
  • @ idclev 463035818 您很少在计算器上找到模运算符,当您发现它适用于整数时,这正是我的意思:我没有谈论 C 或 C++,而是谈论 OP 项目.
  • @Bazejoo 在这种情况下使用 fmodf。如果需要,您还可以限制打印的小数位数。
  • 哦,明白了。建议:“但是请注意,在计算器上使用带浮点数的模数是不常见的。”
猜你喜欢
  • 1970-01-01
  • 2018-08-20
  • 1970-01-01
  • 2022-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-17
  • 1970-01-01
相关资源
最近更新 更多