C#:如何动态计算Y的X百分比值
问题分析与解决
你要计算的是Y的X百分比(比如200的10%),但现有代码的公式逻辑完全搞反了,导致结果不符合预期:
- 第一种写法
(percent / i) * 100:因为是整数除法,10/200直接得到0,再乘100还是0,所以返回0。 - 第二种写法
percent * 100 / i:这算的是X占Y的百分比(10是200的5%),和你要的逻辑正好相反。
正确的计算逻辑
Y的X百分比的数学公式是:Y * X / 100,对应到你的扩展方法里,就是i * percent / 100。
修正后的扩展方法代码:
public static int GetPercent(this int i, int percent) { return i * percent / 100; }
调用200.GetPercent(10)时,计算过程是200*10=2000,2000/100=20,刚好得到你想要的结果。
额外说明
如果需要处理非整数的百分比结果(比如200的15.5%),可以改用浮点类型计算,避免整数除法的精度丢失:
public static double GetPercent(this int i, double percent) { return i * percent / 100.0; }
内容的提问来源于stack exchange,提问作者user5405648
相关产品推荐
相关产品推荐

