为什么pow(5,2)变成24? [英] Why does pow(5,2) become 24?

查看:323
本文介绍了为什么pow(5,2)变成24?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在制作一个简单的计算器,您可以选择一个函数,然后输入2个即可得到答案。这是一个简洁的小程序,除了强大的功能之外,其他所有功能都可以顺利运行。每个数字都可以正常工作。

I'm making a simple calculator that you can choose a function, then 2 inputs to get your answer. It's a neat little program and everything is running smoothly except for the powers. Every number works correctly.

但是要注意: 5 ^ 2 = 24,5 ^ 3 = 624 。我正在使用 pow(number1,number2)

But according to this: 5^2=24, 5^3=624. I am using pow(number1,number2).

#include <iostream>
#include<math.h>

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

    }
    }


推荐答案

pow()返回数字作为浮点数。真正返回的是24.99997或类似的内容。但是您可以通过将其分配给整数来截断它,结果为24。在这种情况下,可以将其分配给整数是可以的,因为您知道答案始终是整数,因此需要四舍五入-而不是截断它。四舍五入为整数的正常方法是像这样加0.5:

pow() returns numbers as floating point. What is really returning is 24.99997 or something similar. But then you truncate it by assigning it to an integer and it comes out as 24. It's ok to assignit to an integer in this case because you know then answer will always be an integer so you need to round it - not truncate it. The normal way to round to an integer is to add 0.5 like so:

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

另一方面,平方根可能不应该分配给整数-几乎每个平方根将保留小数位数。

On the other hand the square root one probably should NOT be assigned to an integer - almost every square root will have decimal places.

这篇关于为什么pow(5,2)变成24?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆