我在 C# 中划分数字时遇到问题。
请参阅我在 C# 中的代码进行除法
double openRate = 0,
long a=542;
long b=4795;
openRate =(a/b)*100
这给11.303..
了我的计算器。但是c#给了我 0.0
可能是什么原因?
a
和b
是整数并使用operator/
oflong
进行除法,得到整数除法。
542 / 4795 = 0
.113
在此之后,它们乘以 100,它也是一个整数。
0 * 100 = 0
最后但并非最不重要的一点是(仍然是整数)结果 get 转换为double
. 你想写的是这样的:
openRate = ((double)a / (double)b) * 100.0;
当你写
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...