Why is modulus operator not working for double in c#?

前端 未结 6 1066
粉色の甜心
粉色の甜心 2020-11-30 10:21

Consider this:

double x,y;
x =120.0;
y = 0.05;

double z= x % y;

I tried this and expected the result to be 0, but it came out 0.04933333.<

6条回答
  •  野性不改
    2020-11-30 10:54

    This is what we use.. :)

     public double ModuloOf(double v1, double v2)
        {
            var mult = 0;
    
            //find number of decimals
            while (v2 % 1 > 0)
            {
                mult++;
                v2 = v2 * 10;
            }
    
            v1 = v1 * Math.Pow(10, mult);
    
            var rem = v1 % v2;
            return rem / Math.Pow(10, mult);
        }
    

提交回复
热议问题