10

如何计算 int 的百分之几?
例如我想从数字中获得 30%,如果我使用这个代码示例,我会得到错误的答案:

int number = 250;
int result = (number / 100) * 30;  

结果将是60,而真正的答案是75,有什么方法可以计算出来吗?

4

11 回答 11

16

除法前乘:

int result = number * 30 / 100;

得到结果的原因是整数类型的除法会产生整数结果:250 / 100 是 2。如果在除法之前进行乘法运算,仍然会得到整数结果,但至少在中间步骤中没有丢失数据。如果您必须处理非常大的数字,则存在超出允许范围的危险int

或者,您可以使用浮点算术,其中除法可以产生整数的分数:

int result = number * 0.30;

不过,这可能会产生意想不到的结果,所以最好只使用上面的整数。或者写3.0/10而不是0.30.

于 2013-07-01T13:40:29.587 回答
3

假设数字很小(ish),你可以把它转过来:

 int result = (number * 30) / 100;

(括号不是必需的,但有助于澄清)。

如果其中任何一个数字是几百万,这将不起作用,但对于小于该数字的数字应该没问题。

于 2013-07-01T13:40:57.897 回答
3

切换操作数(如其他人建议的那样)也可以,但如果您不想这样做,还有另一种解决方案:

int number = 250;
int result = static_cast<double>(number) / 100 * 30; 
于 2013-07-01T13:45:24.583 回答
2

试试这个,

int number = 250;
float result = number  * (float)(30/100.0);
于 2013-07-01T13:42:26.627 回答
1

另一种可能性,在使用 32 位数字时在 Windows 中很好。

整数 = 750;

整数结果;

结果 = MulDiv(数, 30, 100);

https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-muldiv

于 2020-03-02T21:07:56.223 回答
0

您需要执行浮点数学运算,否则编译器会将此处的所有算术运算作为整数进行。

你可以试试

int result = (number / 100.0) * 30;
于 2013-07-01T13:41:23.943 回答
0

使用浮动:

float number = 250;
float result = (number / 100.0) * 30

同样,只需将 100.0 与十进制点放在那里就足够了。

因为如果你这样做,整数的 250 / 100 等于 20(你只能将 100 放入 200 中两次,整数不关心其余的 50)和乘以 30 = 60。

于 2013-07-01T13:44:03.813 回答
0

现在我想一些解决方案:

int number = 250;
int result = number * 100;
result = (result / 100) * 30;
result /= 100;
于 2013-07-01T13:45:44.920 回答
0

整个程序是这样的:

double number , result;

cout << "Enter the number:";
cin >> number;

result = number * 30.0 / 100;
cout << "Result = " << result << endl;

你会得到你的答案....

于 2014-06-26T10:57:59.710 回答
-1

分数/项目*30 ex;

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;
于 2016-09-21T07:20:55.253 回答
-1

这是一个一阶方程,比看起来简单!

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";
于 2021-02-14T15:11:11.100 回答