因此,我尝试对这个问题Link进行编码,然后我开发了逻辑并开始对其进行编码。该代码如下所示,但是存在问题。当我为代码提供以下输入(图像1)时,输出结果为2.22582e + 007,而正确的接受输出为22258199.500000。我应该对数据类型进行哪些更改以修正此错误。我该如何更改表示法。请耐心等待,因为我对数据类型的了解有限。
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
int n,l;
cin >> n;
cin >> l;
vector<float> v;
vector<float> b;
for(int i=0; i<n; i++){
int x;
cin >> x;
v.push_back(x);
}
sort(v.begin(),v.end());
if(v[0]!=0){
b.push_back(v[0]);
for(int i=1; i<n; i++){
b.push_back((v[i] - v[i-1])/2.0);
}
}else if(v[0] == 0){
for(int i=1; i<n; i++){
b.push_back((v[i] - v[i-1])/2.0);
}
}
sort(b.begin(), b.end());
cout << b[b.size()-1];
}
答案 0 :(得分:1)
您可以使用std::cout << std::setprecision(std::numeric_limits<float>::max_digits10)
以可往返的格式输出值。 (这将需要标题<limits>
和<iomanip>
)。
如果这不起作用,请尝试将float
替换为double
。
答案 1 :(得分:0)
您将要使用iomanip
。
#inlcude <iomanip>
cout<<fixed<<setprecision(6)
fixed
将禁用科学计数法。
setprecision
将使您尽可能精确。
答案 2 :(得分:0)
此问题已解决。 link 问题主要是输出的表示法是科学的,有时在线法官不接受这种表示法,因此,要将表示法从科学的改为固定的和其他形式,可以使用以下代码段。 您可以提高精度,也可以更改符号。后一种情况都可以提供帮助。
#include <iostream>
#include <sstream>
int main()
{
std::cout << "The number 0.01 in fixed: " << std::fixed << 0.01 <<
'\n'
<< "The number 0.01 in scientific: " << std::scientific <<
0.01 << '\n'
<< "The number 0.01 in hexfloat: " << std::hexfloat << 0.01
<< '\n'
<< "The number 0.01 in default: " << std::defaultfloat <<
0.01 << '\n';
double f;
std::istringstream("0x1P-1022") >> std::hexfloat >> f;
std::cout << "Parsing 0x1P-1022 as hex gives " << f << '\n';
}