如何计算
int
的百分之几?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
。
切换操作数(如其他人建议的那样)也可以,但以防万一您不想这样做,还有另一种解决方案:
int number = 250;
int result = static_cast<double>(number) / 100 * 30;
假设数字很小,你可以把它反过来:
int result = (number * 30) / 100;
(括号不是必需的,但有助于澄清)。
如果其中一个数字是几百万,则此方法不起作用,但对于小于该数字的数字应该没问题。
试试这个,
int number = 250;
float result = number * (float)(30/100.0);
另一种可能性,在 Windows 中处理 32 位数字时效果很好。
int 数字 = 750;
int 结果;
结果 = MulDiv( 数字, 30, 100 );
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 与十进制点放在一起就足够了。
因为如果你按照你的方式计算,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;
你会得到答案....
分数/项目*30 前;
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";