int countBouncy=5;
int count=999899;
double percent = (double)(countBouncy / count) * 100.0;
该短语的结果是意外的,我得到零。
为什么不起作用?
最佳答案
您正在对(countBouncy / count)
进行整数除法。将您的代码更改为
double percent = ((double)countBouncy / count) * 100.0;
这样,c#编译器将
countBouncy
显式转换为double
,并将count
隐式转换为double
,以使其与(现在为double
)countBouncy
兼容。否则,由于
(countBouncy / count)
都是(5 / 999899) --> 0
,因此它们都是整数。整数除法如何工作?让我们举个例子:
7 / 2 = 3
整数除法将除去实际除法将产生的小数部分。结果被截断为零。您可以使用模运算符获得该除法的余数
7 % 2 = 1
然后像这样执行向后计算
2 * (7 / 2) + 7 % 2 = 7
您可以在Visual Studio的立即窗口中输入以下内容进行测试:
2 *(7/2)+ 7%2
7
关于c# - 浮点数乘法返回意外结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12868662/