我尝试使用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
答案 0 :(得分:0)
如有疑问,请阅读documentation。如果没有可选的第二个参数numdecimalplaces
,Round
函数将返回一个整数:
numdecimalplaces
可选。数字表示舍入中包含小数点右边的位数。如果省略,则Round函数返回整数。
更改行
response.write round(tmp)
到
response.write round(tmp, 1)
如果您希望将值四舍五入为一位小数。
答案 1 :(得分:0)
该数字四舍五入为2948,因为.Net框架遵循IEEE 754标准的Bankers Rounding algorithm。问题不在于数字是否四舍五入,而是由于标准而四舍五入到最接近的偶数。
因此,圆函数完全符合IEEE标准。