直觉(不能肯定正确,当然也不能肯定错误)告诉我,“四舍六入五成双”中的“四”<=4,“六”>=6,<4“五”<6,具体代码没写过。
--------------------------------------------------------------------
Made by Thirdapple's Studio

解决方案 »

  1.   

    希望acptdta(微软全球技术中心 桌面产品技术支持)能看到此贴,帮忙回答一下这个有关舍入的问题。
      

  2.   


    关注!是否也与系统的float运算误差有关?
      

  3.   

    我想就算是有浮点误差,微软也应该可以采取一定的办法保证在相当广的范围内确保四舍五入吧。起码应该能解释
    MsgBox Round(1.035, 2)
    MsgBox Round(1.055, 2)
    为什么分别得到1.03和1.06这样的结果
      

  4.   

    to: footballboy(郑创斌)  佩服 我看了很惭愧啊  我还一直以为 Round 是 四舍六入五成双呢?
      

  5.   

    '四舍五入函数 CRound(MainNumber,Number)
    'MainNumber是要转化的数,Number要保留的位数
    Private Function CRound(MainNumber As Single, Number As Single) As Single
        CRound = CInt(MainNumber * 10 ^ Number + 0.5) / 10 ^ Number
    End Function
      

  6.   

    这是浮点数的问题,微软网站上的几篇说明文章:http://support.microsoft.com/search/preview.aspx?scid=kb;en-us;Q279755
    http://support.microsoft.com/default.aspx?scid=kb;en-us;q42980
      

  7.   

    下面这篇文档里,微软称vb6里面的Format函数已经解决了这个问题:
    http://support.microsoft.com/default.aspx?scid=kb;en-us;Q174155
    我一直这样用:Format(1.035, "#.00"),结果是正确的。
      

  8.   

    或者这样:
    Round(CDec(1.035), 2)其中CDec函数就是把数字转为Decimal数据类型,Decimal是专门为10进制运算准备的,不能将变量声明为 Decimal 类型。但是,可创建一个 Variant ,其子类型为使用 Cdec 函数的 Decimal。
      

  9.   

    按 fuxc(Michael)  的方法这样好象正常了~~~~~~~~
        Dim v As Double, myval As Double, n As Integer
        n = 2
        myval = 1.055
        'myval = 1.035
        v = Format(myval, "#." + String(n, "0"))
        Debug.Print v
    今天我又长见识了~~~~~  ^_^
      

  10.   

    楼主做事真仔细,一直跟你以前的做法一样,现在来学习,gzing……