在c++中获取数字的百分比
Get percent of number in c++
如何计算int的几个百分比
例如,我想从数字中获得30%,如果我使用这个代码示例,我会得到错误的答案:
int number = 250;
int result = (number / 100) * 30;
结果将是60
,而真正的答案是75
,有什么方法可以计算吗?
除法前相乘:
int result = number * 30 / 100;
得到结果的原因是使用整数类型进行除法会产生整数结果:250/100是2。如果先乘后除,仍然可以得到整数结果,但至少在中间步骤中没有丢失数据。如果你必须处理非常大的数字,那么就有可能超出int
允许的范围。
或者,你可以使用浮点运算,除法可以产生整数的分数:
int result = number * 0.30;
不过,这可能会产生意外的结果,所以最好只使用上面提到的整数。或者写入3.0/10
而不是0.30
。
假设数字很小(ish),您可以扭转局面:
int result = (number * 30) / 100;
(括号不是必需的,但有助于澄清)。
如果这两个数字中的任何一个都是几百万,这都不起作用,但对于小于这个数字的数字应该没问题。
切换操作数(正如其他人建议的那样)也可以,但如果您不想这样做,还有另一种解决方案:
int number = 250;
int result = static_cast<double>(number) / 100 * 30;
试试这个,
int number = 250;
float result = number * (float)(30/100.0);
另一种可能性,在Windows中使用32位数字时效果很好。
int num=750;
int结果;
result=MulDiv(num,30100);
https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-muldiv
您需要执行浮点运算,否则编译器会将此处的所有运算作为整数进行。
你可以试试
int result = (number / 100.0) * 30;
使用浮点:
float number = 250;
float result = (number / 100.0) * 30
同样,只要把100.0和deciaml点放在那里就足够了。
因为如果你按照你的方式,250/100的整数等于20(你只能把100放在200中两次,整数不在乎剩下的50),乘以30=60。
现在我考虑一些解决方案:
int number = 250;
int result = number * 100;
result = (result / 100) * 30;
result /= 100;
整个程序就像:
double number , result;
cout << "Enter the number:";
cin >> number;
result = number * 30.0 / 100;
cout << "Result = " << result << endl;
你就会得到答案。。。。
分数/项目*30ex;
15%
int score, items;
cout<<"input your score"<< score<<endl;
cin>>score;
cout<<"input number of items"<<items<<endl;
cin>>items;
float total=score/items*15
cout<<"you got "<<total<<""<<endl;
这是一个一阶方程,比看起来更简单!
float annualGrossSalary;
cout << "Please enter your annual salary: ";
cin >> annualGrossSalary;
float annualNetSalary = (annualGrossSalary - (annualGrossSalary / 100) * 40);
float monthyGrossSalary = annualGrossSalary / 12;
float monthyNetSalary = annualNetSalary / 12;
cout << "Your monthly gross salary is " << monthyGrossSalary << "n";
cout << "Your monthly net salary is " << monthyNetSalary << "n";
cout << "In 10 years you will earn " << annualNetSalary * 10 << "n";
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 检查输入是否不是整数或数字
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 如何用数字处理log(0)
- 最高有效数字侧的第N位
- 如何获取一个数字的前3位
- 查找最接近的大于当前数字的数字的索引
- 找到两对数字,使它们的乘积的绝对差最小化
- 我想做一个彼此不同但重复出现的数字
- 将数字转换为字母(例如:123 转换为一二三)
- C++如何计算用户输入的数字中的偶数位数
- 如何在C++中确定文本文件中的元素是字符还是数字
- 打印数字图案
- C++问题:用户认为数字1-100,程序提出问题不超过6次即可得到答案。无法正确
- 如何检查一个c++字符串中有多少相同的字符/数字
- 获取 2 个数字之间的差异百分比
- 如何在 matr 内按一定百分比随机分配数字
- 将字符串解析为数字或数字和百分比符号
- 在c++中获取数字的百分比