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; } |
问题是,由于您正在对
1 2 | int percentage = (subscribers / carCapacity); percentage *= 100; |
由于
您可以通过在执行操作之前转换为更精确的数字(如
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。