首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

怎么让VB实现真正的四舍五入呢?VB本身是四舍六入呀

2012-04-01 
如何让VB实现真正的四舍五入呢?VB本身是四舍六入呀?如何让VB实现真正的四舍五入呢?VB本身是四舍六入呀?---

如何让VB实现真正的四舍五入呢?VB本身是四舍六入呀?
如何让VB实现真正的四舍五入呢?VB本身是四舍六入呀?
------------------------
VB本身的round()函数,不能实现真正的四舍五入,而是四舍六入五取双,先不说它的精确性如何,就是这种算法的结果与通常意义上的算法有出入,比如我现在做一个计价单,round(单价*数量,2)=金额,这个结果有时就不对.
比如:
debug.Print round(1334.225,2)
结果是: 1334.22,可是我要的结果是1334.23,
虽然就关一分钱,但是与客户对帐时,总不一致呀,后来发现是我的VB程序处理四舍五入有问题.

如何解决这个问题呀?



[解决办法]

VBScript code
Private Sub Command1_Click()Dim sj As SingleDim a As Singlea = 5.001sj = Val(Text1)sj = Int(((sj * 1000 + a) / 1000) * 100) / 100Text2 = sjEnd Sub
[解决办法]
当然是自己编函数啦.
debug.Print MyRound(1334.225,2) 

'绝对四舍五入函数.
Function MyRound(number As Currency, count As Integer)
 If Right(CStr(number * 10 ^ (count + 1)), 1) = 5 Then
number = number + 1 / 10 ^ (count + 1)
 End If
 MyRound = Round(number, count)
End Function

[解决办法]
Private Sub Command1_Click()
MsgBox Format(3.1254, "#.00")
End Sub
保留两位小数.00,三位.000
[解决办法]
4楼的方法应该是正解.
VBScript code
Dim sj As Singlesj = 1334.225sj = Format(sj, "####.00")Text1 = sj 

热点排行