c++ - 如何解决此浮点期望:8 错误
问题描述
该程序假设采用 dict 格式的 json。键是邮政编码,值是租金价格的向量。
当我使用 g++ 运行它时,我得到一个浮点异常 8:错误。据我所知,只有在值溢出其数据类型时才会触发错误,但只有在平均函数的平均变量超过不应发生的 unsigned long long 的最大值时才会发生这种情况。
我也愿意以更优雅的方式编写此代码。
#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;
}
解决方案
推荐阅读
- eclipse - 如何使用 ant 目标生成 .classpath 文件?
- android - 如何在工作管理器中使用改造将一些本地消息一一发布到服务器?
- typescript - 如何对计算属性进行类型检查?
- laravel - 我们是否还应该使用那些仅用于在我们的测试中更改数据库中的数据的迁移?
- java - - 字符计数器 - 数组
- laravel - vue表格不显示数据
- r - 如何关闭在闪亮仪表板中呈现的数据表中的网格线?
- javascript - 如何删除 chrome 图标添加到主屏幕提示
- java - NanoHTTPD - 此站点无法提供安全连接
- push-notification - 未调用 iOS 13 推送通知委托方法