-1

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

请参阅我在 C# 中的代码进行除法

double openRate = 0,

long a=542;
long b=4795;

openRate =(a/b)*100

这给11.303..了我的计算器。但是c#给了我 0.0

可能是什么原因?

4

2 回答 2

2

ab是整数并使用operator/oflong进行除法,得到整数除法。

542 / 4795 = 0 .113

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

0 * 100 = 0

最后但并非最不重要的一点是(仍然是整数)结果 get 转换为double. 你想写的是这样的:

openRate = ((double)a / (double)b) * 100.0;
于 2013-04-23T14:38:30.680 回答
2

当你写

long a = 542;
long b = 4795;

因为因为a / b被计算为整数值;任何小数部分都被删除了。所以在这一点上a / b是不相等的。00,113..

来自小学数学;

0 * 100 = 0

您的计算器可能使用浮动除法,因此实际上它是这样计算的;

double openRate = 0;

long a = 542;
long b = 4795;

openRate =((double)a / b) * 100; // 11.303...
于 2013-04-23T14:43:17.167 回答