如何解决如何解决这个浮点期望:8错误
该程序假定采用字典格式的json。键是邮政编码,值是租金价格的向量。
当我使用g ++运行它时,出现浮点异常8:错误。据我所知,错误仅在值溢出其数据类型时触发,但只有在averaver函数的均值变量超过不应发生的无符号长整数的最大值时,才会发生。
我也愿意以更优雅的方式编写此代码。
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
using namespace std;
unsigned int average(unsigned int n1,unsigned int n2){
unsigned int mean;
mean = (n1 + n2)/2;
return mean;
}
unsigned long long average(vector<unsigned int> nValues){
unsigned long long mean = 0;
for(auto element : nValues){
mean += element;
}
mean /= nValues.size();
return mean;
}
unsigned int strCleaner(string str){
unsigned int na = 0;
string temp;
if(str == "N/A"){
return na;
}
for(auto element : str){
if(element == '$' || element == ',' || element == ' ' || element == '"'){
continue;
}
temp += element;
}
cout << temp << endl;
int newStr = stoi(temp);
return (unsigned int)newStr;
}
int main(void)
{
string line;
ifstream my_json("records_v1.json");
ifstream zips("zip_set.txt");
json my_stat;
json j;
my_json >> j;
while(getline(zips,line)){
vector<unsigned int> summation;
auto map = j[line];
for(auto element: map){
string element_str = element.dump();
size_t result = element_str.find("-");
if(result != string::npos){
string n1,n2;
for (int i = 0; i < element_str.size(); i++)
{
if(i < result){
n1 += element_str[i];
}
if(i > result){
n2 += element_str[i];
}
}
auto mean = average(strCleaner(n1),strCleaner(n2));
summation.push_back(mean);
}else if(element_str != "N/A"){
continue;
}else{
unsigned int cleanedInt = strCleaner(element);
summation.push_back(cleanedInt);
}
}
auto city_mean = average(summation);
my_stat[line] = city_mean;
}
ofstream f_myrecord("fileZ.json");
f_myrecord << setw(4) << my_stat << endl;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。