数学运算总是返回0 c#
我有一个计算百分比并返回int值的c#程序,但它总是返回0 我已经写了16个小时的代码,如果您发现其中的错误,我将不胜感激 我调试了代码,发现值传递正确数学运算总是返回0 c#,c#,C#,我有一个计算百分比并返回int值的c#程序,但它总是返回0 我已经写了16个小时的代码,如果您发现其中的错误,我将不胜感激 我调试了代码,发现值传递正确 private int returnFlag(int carCapacity, int subscribers) { int percentage = (subscribers / carCapacity)*100; return percentage; } 整数类型(int)不适用于分数。将您在除法中使用的类型更改为十进制、
private int returnFlag(int carCapacity, int subscribers)
{
int percentage = (subscribers / carCapacity)*100;
return percentage;
}
整数类型(int)不适用于分数。将您在除法中使用的类型更改为十进制、双精度、单精度或浮点型。您看到的是对两个整数进行运算并丢失小数部分的结果 这段代码在使用值5和14时将截断为0:
(subscribers / carCapacity)
您需要将其中一个操作数强制转换为双精度或十进制:
private int returnFlag(int carCapacity, int subscribers)
{
decimal percentage = ((decimal)subscribers / carCapacity) * 100;
return (int)percentage;
}
问题是,由于您正在对
int
(读取:整数)值执行数学运算,因此任何分数或余数都会被抛出。这可以通过将代码更改为
int percentage = (subscribers / carCapacity);
percentage *= 100;
由于(订户/carCapacity)
的结果少于一个,因此int
可以容纳的唯一可能的数字是0
,0*100
是0
在执行操作之前,您可以通过转换为更精确的数字来解决此问题,例如double
:
private int returnFlag(int carCapacity, int subscribers)
{
double percentage = ((double)subscribers / (double)carCapacity) * 100.0;
return (int)percentage;
}
我通过了5分和14分,所以至少它应该返回一些有意义的东西