为什么pow(5,2)变成了24?

 zf19920222 发布于 2023-01-19 12:36

我正在制作一个简单的计算器,你可以选择一个功能,然后2个输入来得到你的答案.这是一个简洁的小程序,除了权力之外,一切都运行顺畅.每个号码都正常工作.

但根据这个:5^2=24, 5^3=624.我在用pow(number1,number2).

#include 
#include

using namespace std;

int main()
{
    for(;;){
    int func;
    int number1;
    int number2;
    cout << "Input your function (+,-,x,/,Square,Power)(1,2,3,4,5,6) ";
    cin >> func;
    cout << "input #1: ";
    cin >> number1;
    cout << "input #2: ";
    cin >> number2;
    if (func==1){
        int answer;
        answer = number1 + number2;
        cout << number1 << " + " << number2 << " = " << answer << endl;
    }
    else {
            if (func==2){
            int answer;
            answer = number1 - number2;
            cout << number1 << " - " << number2 << " = " << answer << endl;
        }
        else {
            if (func==3){
                int answer;
                answer = number1 * number2;
                cout << number1 << " x " << number2 << " = " << answer << endl;
            }
            else {
               if (func==4){
                    int answer;
                    answer = number1 / number2;
                    int R = number1 % number2;
                    cout << number1 << " / " << number2<< " = " << answer  << " R "<< R << endl;
               }
                else {
                    if (func==5){
                        int answer;
                        answer = pow(number1,0.5);
                        cout << "?" << number1 << "=" << answer << endl;
                    }
                    else {
                        if (func==6){
                            int answer;
                            answer = pow(number1,number2);
                            cout << "?" << number1 << "^" << number2 << "=" << answer << endl;
                        }
                    }
                }
            }
            }
        }

    }
    }

Jerry Jeremi.. 7

pow()将数字作为浮点返回.真正回归的是24.99997或类似的东西.但是你通过将它分配给一个整数来截断它并且它出现为24.在这种情况下可以分配给一个整数,因为你知道答案将永远是一个整数所以你需要对它进行舍入 - 而不是截断它.舍入为整数的常规方法是添加0.5,如下所示:

int answer;
answer = pow(number1,number2)+0.5;

另一方面,平方根可能不应该分配给一个整数 - 几乎每个平方根都有小数位.

1 个回答
  • pow()将数字作为浮点返回.真正回归的是24.99997或类似的东西.但是你通过将它分配给一个整数来截断它并且它出现为24.在这种情况下可以分配给一个整数,因为你知道答案将永远是一个整数所以你需要对它进行舍入 - 而不是截断它.舍入为整数的常规方法是添加0.5,如下所示:

    int answer;
    answer = pow(number1,number2)+0.5;
    

    另一方面,平方根可能不应该分配给一个整数 - 几乎每个平方根都有小数位.

    2023-01-19 12:40 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有