x=Math.Floor(Math.Sqrt(i+100));
y=Math.Floor(Math.Sqrt(i+268));是数值精度的问题呀

解决方案 »

  1.   

    既然是完全平方数,这里的i, x, y 是不是都应该是int数据??你看看把他们定义为:
    int x, y, i;//这样应该就不会错了。
      

  2.   

    double x,y;  -->int x,y;
    double i;-->int i;
      

  3.   

    呵呵,各位看看.NET的类库吧,Math.Sqrt()可不支持int。搂住这么做是有道理的,qqqdong()地说法很对!浮点数的精度问题跟重要。
      

  4.   

    不过,qqqdong()使用了Math.Floor()方法,该方法只能得到小于或等于原浮点数的整数(相应的,Math.Ceiling()方法能得到大于或等于原浮点数的整数)。
    我认为,使用Math.Round(double, int)方法比较好,Math.Round(doubleValue, 0)可以得到四舍五入的整数值(他还是一个double,不过已被四舍五入到整数部分),这个方法的这个版本第一个参数是double,要进行舍入的浮点数;第二个参数是int,要保留的小数点后位数。
      

  5.   

    我倒是建议使用 decimal 类型
      

  6.   

    谢谢大家帮忙,这是我第一次在CSDN的论坛提问,能得到这么多有益的回答,真是万分感激,希望在以后的学习过程中,仍能得到大家的帮助鼓励,特别感谢qqqdong(),loverP(lover_P).