模数运算如何与浮点数据类型一起使用?
我试图找出浮点数据类型的简单模数运算。
float a=3.14f; float b=10f; result=a%b;
我得到结果= 3.14
另一个使用十进制数据类型
decimal p=10; decimal q=40; result=p%q;
得到答案= 20。
我不明白模数是如何工作的?
从C#语言规范中浮点余数。 在x % y
的情况下,如果x
和y
是正有限值。
z
是x % y
的结果,计算为x – n * y
,其中n
是小于或等于x / y
的最大可能整数。
C#语言规范还清楚地概述了如何处理非零有限值,零,无穷大和NaN的所有可能组合的情况,其中浮点值可能出现x%y。
y value | +y –y +0 –0 +∞ –∞ NaN -----+---------------------------- x +x | +z +z NaN NaN xx NaN –x | –z –z NaN NaN –x –x NaN v +0 | +0 +0 NaN NaN +0 +0 NaN a –0 | –0 –0 NaN NaN –0 –0 NaN l +∞ | NaN NaN NaN NaN NaN NaN NaN u –∞ | NaN NaN NaN NaN NaN NaN NaN e NaN | NaN NaN NaN NaN NaN NaN NaN
关于msdn的这篇文章有足够的例子,但我可以快速解释它;
http://msdn.microsoft.com/en-us/library/0w4e0fzs.aspx
如果你做int result = x % y;
你会发现你返回的是x % y
的剩余部分,并且值更像是整数。 例如,链接中的第三行是Console.WriteLine(5.0 % 2.2);
打印.6
。 这是因为它发现2.2可以进入5.0不超过两次。 所以它确实是5 – 2.2(2),这是.6