如何计算int的百分之几? 例如,我想从数字中得到30%,如果我将使用这个代码示例,我会得到错误的答案:
int number = 250;
int result = (number / 100) * 30;
结果将是60
,真正的答案是75
,有没有办法计算它?
答案 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";