数学运算总是返回0 c#


math operations always returns 0 c#

本问题已经有最佳答案,请猛点这里访问。

我有一个计算百分比并返回int值的c程序,但它总是返回0。

我已经写了16个小时的代码了,所以如果你能发现其中的错误,我将不胜感激。

我调试了代码,发现正确传递了值。

1
2
3
4
5
private int returnFlag(int carCapacity, int subscribers)
{
    int percentage = (subscribers / carCapacity)*100;
    return percentage;
}


你看到的是两个整数的运算结果,失去了小数部分。

当使用值5和14时,这段代码将截断为0:

1
(subscribers / carCapacity)

您需要将其中一个操作数强制转换为double或decimal:

1
2
3
4
5
6
private int returnFlag(int carCapacity, int subscribers)
{
    decimal percentage = ((decimal)subscribers / carCapacity) * 100;

    return (int)percentage;
}

问题是,由于您正在对int值(read:integer)执行数学运算,因此任何分数或余数都会被抛出。这可以通过将代码更改为

1
2
int percentage = (subscribers / carCapacity);
percentage *= 100;

由于(subscribers / carCapacity)导致的结果少于一个,因此一个int能容纳的唯一可能的数字是00 * 1000

您可以通过在执行操作之前转换为更精确的数字(如double)来解决此问题:

1
2
3
4
5
private int returnFlag(int carCapacity, int subscribers)
{
    double percentage = ((double)subscribers / (double)carCapacity)* 100.0;
    return (int)percentage;
}


整数类型(int)不适用于分数。将您在除法中使用的类型更改为十进制、double、single或float。