我猜这更多是一个数学问题,但是当您将双精度数除以1时,为什么它也会返回小数点呢?

例如,123.23 % 1等于0.23

它不应该只返回0吗?

MSDN参考资料说模块执行此ex - (x / y) * y,其中x是除数,为什么是除法器,如果这样计算,它将返回0。

那么,告诉我它怎么也返回小数点呢?

最佳答案

您不只是将其除以1,而是要获取模数。模数返回第一个参数除以第二个参数所得的余数。

这意味着它将从输入中减去最高的完整除法器,然后返回余数。在你的情况下


  123.23-123 = 0.23


因为123可以除以1而不会“剩下任何东西”。剩下的就是您遇到的0.23。

模运算符在许多情况下都很方便。两个非常常见的是:

检查偶数/奇数
如果您有一个整数并且取模2,则结果为1(奇数)和0(偶数)。

检查第n次迭代
如果您有一个循环并说要每10次迭代打印一次结果,则可以有一个连续计数器,并使用如下代码

if (Counter % 10 == 0) then {
    Console.WriteLine("Tick Tock");
}


有关更多示例,请参见MSDN:https://msdn.microsoft.com/de-de/library/0w4e0fzs.aspx?f=255&MSPPError=-2147217396

关于c# - 双除以1,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32034154/

10-12 17:27