为什么这样的数字:-1.7e + 007出现在结果中?

Zan*_*ish -1 c++

有人可以解释一下为什么这个奇怪的数字出现在编译器上吗?

它应该是这样显示的(我输入的数字):

10000000 + 12000000 + 15000000的加法是:XXXXX

10000000-12000000-15000000的减法是:XXXXX

10000000/12000000/15000000的除法是:XXXXX

10000000 * 12000000 * 15000000的乘法是:XXXXX

10000000 * 12000000 + 15000000-10的运算是:XXXXX

这就是给我看的:

1e + 007 + 1.2e + 007 + 1.5e + 007的加法为:3.7e + 007

1e + 007-1.2e + 007-1.5e + 007的减法为:-1.7e + 007

1e + 007 / 1.2e + 007 / 1.5e + 007的除法:5.55556e-008

1e + 007 * 1.2e + 007 * 1.5e + 007的乘法是:1.8e + 021

1e + 007 * 1.2e + 007 + 1.5e + 007-10的运算是:1.2e + 014

这是代码:

#include <sstream>
#include <iostream>
#include <math.h>
using namespace std;

class Test
{
private:
    float number1, number2, number3;
public:
    Test();
    Test(float, float, float);
    ~Test();

    void setNumber1(float);
    void setNumber2(float);
    void setNumber3(float);

    float getNumber1();
    float getNumber2();
    float getNumber3();

    float additionNumbers();
    float substractionNumbers();
    float divisionNumbers();
    float multiplicationNumbers();
    float operationNumbers();

    string toString();
};

Test::Test()
{
    number1=0;
    number2=0;
    number3=0;
}

Test::Test(float pnumber1, float pnumber2, float pnumber3)
{
    number1=pnumber1;
    number2=pnumber2;
    number3=pnumber3;
}

Test::~Test()
{

}

void Test::setNumber1(float pnumber1)
{
    number1=pnumber1;
}

void Test::setNumber2(float pnumber2)
{
    number2=pnumber2;
}

void Test::setNumber3(float pnumber3)
{
    number3=pnumber3;
}

float Test::getNumber1()
{
    return number1;
}

float Test::getNumber2()
{
    return number2;
}

float Test::getNumber3()
{
    return number3;
}

float Test::additionNumbers()
{
    float addition=0;

    addition=getNumber1()+getNumber2()+getNumber3();

    return addition;
}

float Test::substractionNumbers()
{
    float substraction=0;

    substraction=getNumber1()-getNumber2()-getNumber3();

    return substraction;
}

float Test::divisionNumbers()
{
    float division=0;

    division=getNumber1()/getNumber2()/getNumber3();

    return division;
}

float Test::multiplicationNumbers()
{
    float multiplication=0;

    multiplication=getNumber1()*getNumber2()*getNumber3();

    return multiplication;
}

float Test::operationNumbers()
{
    float operation=0;

    operation=getNumber1()*getNumber2()+getNumber3()-10;

    return operation;
}

string Test::toString()
{
    stringstream s;

    s<<"The addition of "<<getNumber1()<<"+"<<getNumber2()<<"+"<<getNumber3()<<" is: "<<additionNumbers()<<endl;
    s<<"The substraction of "<<getNumber1()<<"-"<<getNumber2()<<"-"<<getNumber3()<<" is: "<<substractionNumbers()<<endl;
    s<<"The division of "<<getNumber1()<<"/"<<getNumber2()<<"/"<<getNumber3()<<" is: "<<divisionNumbers()<<endl;
    s<<"The multiplication of "<<getNumber1()<<"*"<<getNumber2()<<"*"<<getNumber3()<<" is: "<<multiplicationNumbers()<<endl;
    s<<"The operation of "<<getNumber1()<<"*"<<getNumber2()<<"+"<<getNumber3()<<"-10 is: "<<operationNumbers()<<endl;

    return s.str();
}

int main()
{
    float n1=0, n2=0, n3=0;

    Test numbers1(n1, n2, n3);

    cout<<"Enter the first number: ";
    cin>>n1;
    numbers1.setNumber1(n1);

    cout<<"Enter the second number: ";
    cin>>n2;
    numbers1.setNumber2(n2);

    cout<<"Enter the third number: ";
    cin>>n3;
    numbers1.setNumber3(n3);

    cout<<numbers1.toString();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Lig*_*ica 6

这称为科学记数法

默认情况下,I / O流会根据值为浮点选择输出表示法。

您可以使用I / O机械手更改此设置。例如,std::fixed

std::stringstream s;
s << std::fixed;

s << "The addition of " << // etc ... 
Run Code Online (Sandbox Code Playgroud)