模数运算如何处理浮点数据类型
本文关键字:处理 数据类型 运算 何处理 | 更新日期: 2024-10-30 22:34:54
我试图找出对浮点数据类型的简单模运算。
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 x x 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
的其余部分,并且这些值更像是整数。例如,链接中的第三行是打印.6
Console.WriteLine(5.0 % 2.2);
。这是因为它发现 2.2 可以进入 5.0 不超过两次。所以它做 5 - 2.2(2) 即 .6