有人能告诉我为什么变量百分比= 0?它应该是33.3333对吗?(2/6)
因为当我运行下面的函数时,结果是
总行数= 6
奇数行= 2
奇数行百分比= 0
bool count_odd_lines(string a, string b)
{
ifstream in;
ofstream out;
in.open(a.c_str());
out.open(b.c_str());
string s;
int count = 0;
int odd = 0;
if (in && out)
{
while (getline(in, s))
{
count++;
if (s.length() % 2 != 0) odd++;
}
out << "Total lines = " << count << endl;
out << "Odd lines = " << odd << endl;
double percent = odd/count;
out << "Percent odd lines = " << setprecision(4) << percent <<endl;
return true;
}
else return false;
in.close();
out.close();
}
Run Code Online (Sandbox Code Playgroud)
Ben*_*ing 10
问题是你正在进行整数除法.更改:
double percent = odd/count;
Run Code Online (Sandbox Code Playgroud)
至
double percent = static_cast<double>(odd)/count;
Run Code Online (Sandbox Code Playgroud)
NPE*_*NPE 10
有两个问题:
odd和count是整数,所以odd/count执行整数(即,截断)分裂.33.33而不是0.3333),您需要将结果乘以100.您可以解决这两个问题:
double percent = odd * 100.0 / count;
Run Code Online (Sandbox Code Playgroud)
乘法进行缩放,并将后续除法转换为浮点除法.