有人可以解释一下为什么这个奇怪的数字出现在编译器上吗?
它应该是这样显示的(我输入的数字):
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)
这称为科学记数法。
默认情况下,I / O流会根据值为浮点选择输出表示法。
您可以使用I / O机械手更改此设置。例如,std::fixed。
std::stringstream s;
s << std::fixed;
s << "The addition of " << // etc ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
127 次 |
| 最近记录: |