我尝试了很多方法:
float a = 1234.34;
float b = 1234.52;
float r = a * b;
cout << r << endl;
float c = 1234.34 * 1234.52;
cout << c << endl;
cout << 1234.34 * 1234.52 << endl;
cout << (float)(1234.34 * 1234.52) << endl;
所有这些似乎都给出了无限的价值......
1.52382e+006
1.52382e+006
1.52382e+006
1.52382e+006
我在这里做错了什么?
答案 0 :(得分:5)
答案 1 :(得分:2)
价值观不是无限的,它们只是用科学记数法。
1.52382e+006
评估为1.52382 * (10)^6
。
您可能想要使用doubles
,并设置ostream
的精度:
#include <limits> // std::numeric_limits
#include <iostream> // std::cout
int main() {
double f = 3.141592;
std::cout.precision(std::numeric_limits<double>::digits10);
std::cout << std::fixed;
std::cout << f;
return 0;
}
答案 2 :(得分:1)
答案是对的。 1.52382e + 006与1.52382 * 10 6
相同如果您不想使用E格式输出,请使用std::fixed
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
float a = 1234.34;
float b = 1234.52;
float r = a * b;
cout << std::fixed << r << endl;
float c = 1234.34 * 1234.52;
cout << std::fixed << c << endl;
cout << std::fixed << 1234.34 * 1234.52 << endl;
cout << std::fixed << (float)(1234.34 * 1234.52) << endl;
return 0;
}
此代码输出以下内容
1523817.375000
1523817.375000
1523817.416800
1523817.375000
答案 3 :(得分:0)
你得到的是你的结果的科学记数,1523817.4168,科学记数法是1.52382E + 6,其中E代表&#34; 10 ^&#34;,意思是1.52382 * 10 ^ 6,你可以查一查。
答案 4 :(得分:0)
这只是科学记数法。它并不代表无限。