使用float的分区没有给出C#中的预期结果

时间:2013-04-23 14:34:33

标签: c# double division

我在c#中划分数字时遇到问题。

在C#中查看我的代码

double openRate = 0,

long a=542;
long b=4795;

openRate =(a/b)*100

这会在我的计算器中显示11.303..。 但是c#给了我0.0

可能是什么原因?

2 个答案:

答案 0 :(得分:2)

ab是整数,并使用operator/的{​​{1}}进行划分,从而产生整数除法。

  

542/4755 = 0 .113

在此之后,他们乘以100,这也是一个整数。

  

0 * 100 = 0

最后但并非最不重要的是(仍然是整数的)结果被转换为long。你想写的是这样的:

double

答案 1 :(得分:2)

写作时

long a = 542;
long b = 4795;

因为a / b被计算为整数值;任何小数部分都被丢弃了。因此,此a / b等于0,而不是0,113..

从小学数学;

0 * 100 = 0

你的计算器可能使用浮动除法,所以实际上它计算得像;

double openRate = 0;

long a = 542;
long b = 4795;

openRate =((double)a / b) * 100; // 11.303...