我在c#中划分数字时遇到问题。
在C#中查看我的代码
double openRate = 0,
long a=542;
long b=4795;
openRate =(a/b)*100
这会在我的计算器中显示11.303..
。
但是c#给了我0.0
可能是什么原因?
答案 0 :(得分:2)
a
和b
是整数,并使用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...