To: gpo2002(我属于纯偶像派一点实力也没有的那一种) ,下面的四舍五入正确应该得到23.50 ,下例实际结果是23.51 :Dim aa As Double 'aa = Val(Text1.Text) aa=23.5045 aa = aa + 0.005 MsgBox Str(Round(aa, 2)) To:Sant11(S蚂蚁11) 你的方法下面例子得的结果23.50,正确结果是23.51 Dim aa As Double aa = 23.505 MsgBox Str(Format(aa, "0.00"))
penglc(猎者)不会啊。。我刚还试了。 如aa=22.505 的话,用我的方法可以得到22.51Private Sub Form_Load() Dim aa As Double aa = 23.5045 MsgBox Str(Format(aa, "0.000")) End Sub我刚还用这个试了,结果是23.505
大家试试这个看行不aa = 23.505 b = 2 '设定小数点后的保留位数 c = InStr(aa, ".") '得到小数点的位置 d = Left(Mid(aa, c + b + 1), 1) '取保留位数后一位数字 If Val(d) > 4 Then aa = Val(Left(aa, c + b)) + 1 / (10 ^ b) Else aa = Val(Left(aa, c + b)) End If
那可能是我vb出问题了, 你试试下面的代码: Private Sub Command1_Click() Dim aa As Double aa = 23.505 MsgBox Str(Format(aa, "0.00"))End Sub上面的我msgbox得的 23.5 ,测aa=23.5045 留三位得的结果是 23.504 ... 头晕了, 睡觉,明天再来看你们的回贴,说不定就理顺了
aa=int(aa*1000)
aa=aa+val(right(str(aa),1))
aa=int(aa/10)
aa=aa/10
可以把转换的那段,写成一个 function。 笨方法哦~
-----------------------------------------
Round函数
返回一个数值,该数值是按照指定的小数位数进行四舍五入运算的结果。
语法
Round(expression [,numdecimalplaces])
Round函数语法有如下几部分:
部分 描述
expression 必需的。要进行四舍五入运算的数值表达式。
numdecimalplaces 可选的。数字值,表示进行四舍五入运算时,小数点右边应保留的位数。如果忽略,则Round函数返回整数。
-----------------------------------------------------------aa=23.505
bb=round(aa,2) '这不就是保留右边两位有效数字
不用那么复杂!
四舍五入的简单方法:+ 最小精度的1/2 !aa=23.505 aa= aa + 0.005round(aa,2)
如
bb=format(aa,"0.00")
这样就保留两位,而且还是四舍五入
要保留几位就在format里加几个"0"
如保留5位则
bb=format(aa,"0.00000")
'aa = Val(Text1.Text)
aa=23.5045
aa = aa + 0.005
MsgBox Str(Round(aa, 2))
To:Sant11(S蚂蚁11) 你的方法下面例子得的结果23.50,正确结果是23.51 Dim aa As Double
aa = 23.505
MsgBox Str(Format(aa, "0.00"))
如aa=22.505
的话,用我的方法可以得到22.51Private Sub Form_Load()
Dim aa As Double
aa = 23.5045
MsgBox Str(Format(aa, "0.000"))
End Sub我刚还用这个试了,结果是23.505
大家试试这个看行不aa = 23.505
b = 2 '设定小数点后的保留位数
c = InStr(aa, ".") '得到小数点的位置
d = Left(Mid(aa, c + b + 1), 1) '取保留位数后一位数字
If Val(d) > 4 Then
aa = Val(Left(aa, c + b)) + 1 / (10 ^ b)
Else
aa = Val(Left(aa, c + b))
End If
Private Sub Command1_Click()
Dim aa As Double
aa = 23.505
MsgBox Str(Format(aa, "0.00"))End Sub上面的我msgbox得的 23.5 ,测aa=23.5045 留三位得的结果是 23.504 ...
头晕了, 睡觉,明天再来看你们的回贴,说不定就理顺了
round(2.015,2)=2.02
round(2.025,2)=2.02
round(2.035,2)=2.04
round(2.045,2)=2.04
(1)对于最小精度的后一位如果是5,那么如果其前面的奇数,则进1,如果是偶数则只保留偶数;
(2)如果对于最小精度的后一位小于5,保留不变;
(3)如果对于最小精度的后一位大于5,则进1 。
例如:
假设最小精度取小数点后三位:
2.018674 --> 2.019 (根据第(3)条,“6”是大于5,所以进1,“8”变“9”)
2.018574 --> 2.018 (根据第(1)条,“5”前面是偶数“8”,不进)
2.018474 --> 2.018 (根据第(2)条,“4”是小于5,不进)
2.017574 --> 2.018 (根据第(1)条,“5”前面是奇数“7”,进1,"7"变"8")
to zhangxiushu(山高水长):用vb如何判断奇偶数,谢谢!!!!!!