2011-04-12 118 views

回答

0

使用标准模运算符%有问题吗?

double c = a%b; 
+2

是的,有:'第4行:错误:类型为'double'和'double'的无效操作数为二进制'operator%'' – 2011-04-12 05:32:20

+2

MSDN不同意 - http://msdn.microsoft.com/en-us/ library/0w4e0fzs.aspx我也很肯定我之前在C#中用过很多次,有过多次双打。 – tamarintech 2011-04-12 05:34:38

+0

我的歉意,我误解了标签,并认为这是一个C++问题。 – 2011-04-12 05:35:23

1

即使世界可能是一个功能的地方,但下面的是等效,很简单:

a - b*(Math.Floor(a/b)) 

a % b

在旧的C math.h具有的功能fmod。 c#甚至会允许你使用它?我不知道任何一种方式。

PS - 你确定%运营商不工作?

0
float x = 5.1F; 
    float y = 2.3F; 
    float t = x % y;     
1

浮点数/双数是从不精确值,因此%运算符将无法一致地工作。改为使用decimal使模数运算符适用于实数。

decimal a, b c; 
a = 32.3M; 
b = 3.23M; 

c = a % b; //c should be zero. 

编辑

检查Avoid modulus operator with types float and double部分(底页)的MSDN上。