圆形功能无法正常工作

时间:2014-03-04 11:58:00

标签: vbscript

我尝试使用VBscript

来舍入值

这是我的代码

sql = "select lastcode from " & session("gasbook") & ".acccode where account='" _
      & Trim(rsgrn.fields("stockcode")) & "'"
response.write sql
rs.Open sql, cn
if err.number<>0 then
    cn.rollbacktrans
    call HandleError(err.number,err.description,err.source)
        Response.End
else
    if (rs.EOF and rs.BOF) then
        cn.RollbackTrans
        Response.Write "GAS Code doesn't exist in " & session("gasbook")
        Response.End
    else
        If clng(rs.Fields("lastcode")) <> 0 Then
            cn.RollbackTrans
            Response.Write "Stock Account must be control account in " _
              & session ("gasbook")
            Response.End
        End If
    end if
end if
dim tmp
tmp = rsgrn.Fields("amount")
response.write tmp
response.write round(tmp)

tmp的值 2984.5 ,但当我在round上应用tmp时,它会转换为 2984 而不是 2984.5

2 个答案:

答案 0 :(得分:0)

如有疑问,请阅读documentation。如果没有可选的第二个参数numdecimalplacesRound函数将返回一个整数:

  

numdecimalplaces

     

可选。数字表示舍入中包含小数点右边的位数。如果省略,则Round函数返回整数。

更改行

response.write round(tmp)

response.write round(tmp, 1)

如果您希望将值四舍五入为一位小数。

答案 1 :(得分:0)

该数字四舍五入为2948,因为.Net框架遵循IEEE 754标准的Bankers Rounding algorithm。问题不在于数字是否四舍五入,而是由于标准而四舍五入到最接近的偶数。

证据:Here。和Here

因此,圆函数完全符合IEEE标准。