获取c ++中的数字百分比

时间:2013-07-01 13:38:55

标签: c++ integer-division

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

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

结果将是60,真正的答案是75,有没有办法计算它?

11 个答案:

答案 0 :(得分:15)

分割前乘以:

int result = number * 30 / 100;

你得到结果的原因是整数类型的除法产生一个整数结果:250/100是2.如果你在除法前乘以你仍然得到一个整数结果,但至少你没有丢失数据中间步骤。如果你必须处理非常庞大的数字,那么就有可能超出int所允许的范围。

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

int result = number * 0.30;

这可能会产生unexpected results,所以你最好只使用上面的整数。或者写下3.0/10而不是0.30

答案 1 :(得分:2)

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

 int result = (number * 30) / 100;

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

如果其中任何一个数字都是数百万,那么这项工作将不会奏效,但对于小于此数字的数字应该没问题。

答案 2 :(得分:2)

切换操作数(正如其他建议的那样)也会起作用,但万一你不想这样做,还有另一个解决方案:

int number = 250;
int result = static_cast<double>(number) / 100 * 30; 

答案 3 :(得分:1)

试试这个,

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

答案 4 :(得分:1)

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

int num = 750;

int结果;

result = MulDiv(num,30,100);

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

答案 5 :(得分:0)

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

您可以尝试

int result = (number / 100.0) * 30;

答案 6 :(得分:0)

使用float:

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

同样只需要将带有deciaml点的100.0放在那里就足够了。

因为如果你这样做你的方式250/100整数等于20(你可以把200只200只200只,整数不关心其余的50)和时间30 = 60.

答案 7 :(得分:0)

现在我想一些解决方案:

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

答案 8 :(得分:0)

整个计划如下:

double number , result;

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

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

你会得到答案....

答案 9 :(得分:0)

得分/项目* 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;

答案 10 :(得分:-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";