四舍五入是怎么判断的啊,好象有人说过是+0.5取整?不太明白,有人可以详细说下么。还有不同精度转换是什么原则呢
如:四舍五入结果,1.5,-1.5
float f = -123.567f;
int i=(int)f;
i是多少

解决方案 »

  1.   

    float f = -123.567f; 
    int i=(int)f; 
    i=-123
      

  2.   

    float f = -123.567f; Math.Round(f);
      

  3.   

    取整是去掉小数部分。(不管小数部分是多少,都去掉。)例:(int)1.9的结果和(int)1.1的结果是一样的都是1
    四舍五入是小数部分大于或等于0.5,则进1,否则舍去。例:1.9四舍五入结果是2,而1.1四舍五入结果是1
    所谓+0.5取整是指,把原来的数加上0.5,在取整。是四舍五入的一种求法。例:1.9做四舍五入,先加0.5,结果是2.4,再对2.4取整结果2。
    1.1做四舍五入,1.1+0.5=1.6,1.6取整为1。
    不知道lz明白了。
      

  4.   

    Math.Round(-1.5) = -2; 
      

  5.   

    你那么肯定?
    呵呵。这是编译器,不能想当然。。
    C#:Math.Round(-1.5) = -2; 
    JAVA:Math.Round(-1.5) = -1; 
      

  6.   

    其实C#中的四舍五入是用的银行家舍入,比如说:
    Math.Round(1.125,2)=1.12这个规则是4及以下舍,6及以上入,5如果前一位是奇数则入否则舍。
      

  7.   

    再举几个例子:
    Math.Round(-1.5)=-2
    Math.Round(-2.5)=-2
    Math.Round(-3.5)=-4
      

  8.   

    啊,感谢!
    我另外查了下,如果想不管奇偶都是遇5就进,可以Math.Round(-2.5,MidpointRounding.AwayFromZero)
      

  9.   

    1),public static decimal Round(decimal d);这是函数原形。
    返回值:最接近 d 参数的整数。如果 d 在两个整数的中间,其中之一按定义是偶数,另一个是奇数,则返回偶数。
    例:Math.Round(4.4); //Returns 4.0.
        Math.Round(4.5); //Returns 4.0.
        Math.Round(4.6); //Returns 5.0.
    2)public static decimal Round(decimal d, int decimals);
    返回值:
        精度等于 decimals 的、最接近 d 的数字。如果 d 位于两个数字的中间,其中一个为偶数,另一个为奇数,则返回偶数。如果 d 的精度小于 decimals,那么返回 d 而不做更改。
    例:
    Math.Round(3.44, 1); //Returns 3.4.
    Math.Round(3.45, 1); //Returns 3.4.
    Math.Round(3.46, 1); //Returns 3.5.
    这是C#版的。在帮助里找到的说明。和大家上学时学的数学上的四舍五入有点区别。
    备注
    此方法的行为遵循 IEEE 标准 754 的第 4 节。这种舍入有时称为就近舍入或银行家舍入。