怎么Round(9 / 2)得到4的?我要四舍五入怎么办?

解决方案 »

  1.   

    VB6中文版说这个函数是四舍五入函数,实际上这个函数采用的四舍六入五留双。VB的Round所采用的算法是这样的: 
        1.25留一位,则1.2=round(1.25) 
        如果是1.35,则1.4=round(1.35) 
        奇进偶不进。这样在一大串需要四舍五入的数相加相减相乘时误差小一点。eg:1.25+1.35+1.45+1.55+1.15+1.65=8.4=round(1.25)+round(1.35)+round(…… 
        ROUND函数符合国家和国际标准,该函数是正确的。原先的四舍五入只是一个简化。
      

  2.   

    四舍六入五成双,计算机通用的原则,因为"0"和"1" 
    参考:http://blog.sina.com.cn/s/blog_4cbb97be010008o9.html
      

  3.   

    Round(9*1.000000001 / 2)=5  '方法就是乘上一个近似1的数(同时>1),实现四舍五入
      

  4.   

    四舍六入五成双,英文叫做 Banker's Rounding,为了让借贷双方进位/去位的概率对等。
      

  5.   

    自己写一个:    Public Function Round(ByVal x As Double, Optional ByVal dp As Integer = 0) As Double
            x = x * 10 ^ dp + 0.5
            Round = Int(x) / 10 ^ dp
        End Function
      

  6.   

    Public Function Round(ByVal x As Double, Optional ByVal dp As Integer = 0) As Double
            x = x * 10 ^ dp + 0.5
            Round = Int(x) / 10 ^ dp
        End Function
      

  7.   


    Round(9 / 2)
    (9 / 2) :(int 9 / int 2)等于4, Round(4)= 4
      

  8.   

    round(x)得到的结果是离x最近的整数
      

  9.   

    round(9.0/2.0) or round(9.0/2) or round(9/2.0) 其中一个为小数才行
      

  10.   

    select round(9.0/2,0)结果5.000000
      

  11.   

    这是"银行家"的四舍五入算法, 目的是为了取得概率上的平衡.1~9 有9个数字, 5处在中间, 如果逢5进一, 最终的结果肯定偏大, 如果逢5都不进位, 则结果集偏小. 对于四舍五入的数字式5的时候, 则通过整数部分的奇偶来做一个选择. 
    9/2=4.5, round(4.5)=4,
    11/2=5.5, round(5.5)=6
      

  12.   

    Math类中提供了三个与取整有关的方法:ceil、floor、round,这些方法的作用与它们的英文名称的含义相对应,例如,ceil的英文意义是天花板,该方法就表示向上取整,Math.ceil(11.3)的结果为12,Math.ceil(-11.3)的结果是-11;floor的英文意义是地板,该方法就表示向下取整,Math.ceil(11.6)的结果为11,Math.ceil(-11.6)的结果是-12;最难掌握的是round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。
      

  13.   

    13楼正解,9/2结果就是4,不同语言中此处定义不一样,有的表示整除法,这时就是4,少数表示4.5,和ROUND无关!
      

  14.   

    select round(9/2,舍位级别)from dual;
      

  15.   

    相当于 (int)Math.floor(a + 0.5f)      看看API吧  和四舍五入不一样
      

  16.   

    四舍六入五成双,计算机通用的原则,因为"0"和"1" 
    参考:http://blog.sina.com.cn/s /blog_4cbb97be010008o9.html
      

  17.   


    这是数据类型问题。9/2是整数相除取商,结果是4,然后round()当然也是4了。
    要改变这种情况,需要把至少其中之一操作数变成浮点数,如9.0/2或9/2.0或9.0/2.0等等。
      

  18.   

    这个仍然为4int(9.0/2 +0.5)
      

  19.   

    Round的确是实现四舍五入的,但是你要知道,9是默认的Int32,2也是默认的Int32,然后9/2得到的4,而不是4.5。
      

  20.   

    首先,你用的Round()是在哪个语言环境里的。以下是在C++或Pascal或Delphi下的Round()说明:
    Pascal
      function Round(X: Extended): Int64;
    C++
      Int64 Round(Extended X);
    =========================================
    Description
    In Delphi, the Round function rounds a real-type value to an integer-type value. X is a real-type expression. Round returns an Int64 value that is the value of X rounded to the nearest whole number. If X is exactly halfway between two whole numbers, the result is always the even number. This method of rounding is often called "Banker's Rounding". 意思是说,如果X值恰好在两个整数中间,那么函数值偶数那个数。
    例如:
    Round(1.5) = 2 //1和2之间,取偶数2
    Round(2.5) = 2 //2和3之间,取偶数2
    Round(3.5) = 4 //3和4之间,取偶数4在你的语言环境里,你测试以下值是多少,就应该知道该怎么办了。
    Round(1.49) = ?
    Round(2.49) = ?
    Round(3.49) = ?Round(1.51) = ?
    Round(2.51) = ?
    Round(3.51) = ?
      

  21.   

    你用的Round()是在哪个语言环境里的?Round(X)可以实现四舍五入的
      

  22.   

    Math类中提供了三个与取整有关的方法:ceil、floor、round,这些方法的作用与它们的英文名称的含义相对应,例如,ceil的英文意义是天花板,该方法就表示向上取整,Math.ceil(11.3)的结果为12,Math.ceil(-11.3)的结果是-11;floor的英文意义是地板,该方法就表示向下取整,Math.ceil(11.6)的结果为11,Math.ceil(-11.6)的结果是-12;最难掌握的是round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。
      

  23.   

    simpleRound();呵呵是delphi的 自己改之
      

  24.   

    四舍六入五成双,计算机通用的原则,因为"0"和"1"  
    参考:http://blog.sina.com.cn/s/blog_4cbb97be010008o9.html
      

  25.   

    我创建的asp.net mvc群  113582743  希望大家多多支持,共同进步,非诚勿扰