1723.5/5的余数应该是3.5,但用
long x;
double m = Math.DivRem((long)1723.5, (long)5.0, out x);
得到余数是 -1.5 (怪,3.5的余数居然变成了负值)用
double m1 = Math.IEEERemainder(( double )5.0,(double )723.5);
得到余数是3,也无法得到3.5

解决方案 »

  1.   

    try...double m = (double)723.5 % 5.0;
      

  2.   


    private void button4_Click(object sender, EventArgs e)
    {
        double y = 1723.5 % 5;                                      // y结果是:  3.5
        long x;
        double m = Math.DivRem((long)1723.5, (long)5.0, out x);     // x返回值:  3
        double m1 = Math.IEEERemainder((double)5.0, (double)723.5); // m1结果是: 5.0
    }
    上面是实测结果。(1) 1723.5 % 5 = 3.5  正常(2) 第二种情况,先做强制转换成长整型,再求余。
      等效计算式是:1723 % 5 = 3(3) 第三种情况是,比较小的数,除以比较大的数,等于被除数
      等效计算式是:5.0 % 723.5 = 5.0