有人能告诉我为什么我的分数总是计算为零吗
Can someone tell me why my fraction always calculates as zero?
有人能告诉我为什么变量percent=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();
}
有两个问题:
odd
和count
都是整数,所以odd/count
执行整数(即截断(除法- 要获得百分比(即
33.33
而不是0.3333
(,需要将结果乘以100
你可以这样解决这两个问题:
double percent = odd * 100.0 / count;
乘法进行缩放,并将后续除法转换为浮点除法。
问题是您正在进行整数除法。更改:
double percent = odd/count;
至
double percent = static_cast<double>(odd)/count;
整数的除法总是产生一个整数;count
和odd
都是整数,所以odd/count
给出的最大整数低于实际值。
尝试double percent = static_cast<double>(odd)/count;
强制浮点除法。
double percent = odd/count;
是错误的。它在分配之前对除法进行四舍五入。将所有变量转换为float。
当两者都是整数时执行odd/count
时,它执行整数除法。您需要将其中一个作为浮点除法的替身。
(double)odd/count
因为count
和odd
都是整数,所以计算odd / count
也基于整数。将count
和odd
声明为Double,就可以开始了。
相关文章:
- 我看到"use of undeclared identifier"错误,有人可以告诉我如何解决它吗?
- 谁能告诉我我用 getline 做错了什么 (cpp) 格式
- 比特集告诉我的名字是什么?
- 我试图用这段代码找到二叉树的高度,但它一直返回 0,有人可以告诉我为什么吗?
- 任何人都可以告诉我我的 C++ 代码出了什么问题?
- 我可以让 valgrind 告诉我 _哪个_值未初始化吗?
- 程序告诉我,即使它们明显匹配,参数也不匹配
- 谁能告诉我为什么这段代码没有产生正确的输出?
- 谁能告诉我,程序中的错误是什么?该程序仅用于获取文件扩展名
- 为什么 gcc 告诉我我的模板不是模板?
- 代码以查找数组中的最大数字,但它仅将第一个数字显示为最大数字. 有人请告诉我为什么
- 关于这个在 Linux 上使用 gcc 编译的程序中的 vtable,nm 告诉我什么?
- 告诉我如何填充二维数组
- 我找不到瓦尔格林德告诉我的记忆链接
- 如何将char数组声明为函数参数?或告诉我此代码中还有其他问题?
- 如果我放弃哈希计算,我必须调用 SHA1_Final() 吗?
- 合成错误不知道为什么会发生这种情况,请检查一下并告诉我这是我的编码还是视觉工作室
- 为什么只有一行告诉我操作员=不可行?但是其他人很好
- 有人可以告诉我波纹管代码(C++)穿了什么吗?
- 有人能告诉我为什么我的分数总是计算为零吗