将int的div转换为int到小数为0

时间:2018-04-21 17:20:43

标签: c#

我想出了一个公式来保持数字简单int并且惊讶地看到以下产生了0。

var x = 45;
var y = 100;
var z = Convert.ToDecimal(x / y * 100);

在上面的例子中,我将100除以100,然后乘以x,但在大多数情况下,yx值几乎是荒谬的不是很好的整数。

当我的y0值最终为整数时,上述转换会生成{{1}}。那是为什么?

2 个答案:

答案 0 :(得分:2)

X / Y = 0.45

0.45的Int转换为0.

因此0 * 100 = 0。

因此Convert.ToDecimal(0)为0.

答案 1 :(得分:1)

这看起来有点奇怪,但问题在于表达式的计算顺序:首先评估Convert的参数,并在整数中完成。这就是结果被截断的原因。

您应该使用强制进行小数评估的表达式替换会话:

var z = 100M * x / z;