举个例子
目前成都创新互联公司已为上千多家的企业提供了网站建设、域名、雅安服务器托管、成都网站托管、企业网站设计、酒泉网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
Dim a As Decimal = 1.999
Dim b As Decimal = Math.Round(a, 2)
结果为b = 2.00
四舍五入保留两位
VB用Format 函数即可实现。
Format 函数,返回 Variant (String),其中含有一个表达式,它是根据格式表达式中的指令来格式化的。
Print Format(3.1415926, "#.##")
*#:表示一个数字位。#的个数决定了显示区段的长度。如果要显示的数值的位数小于格式字符串指定的区段长度,则该数值靠区段的左端显示。如果要显示的数值的位数大于指定的区段长度,则数值照原样显示。 要显示多位,只需要设置数字位数即可,例如:
Print format(3.14159262654321,”#.#######”)
显示:3.1415926
代码分析:
Math.Floor:返回小于或等于指定数字的最大整数。
Fix:返回数字的整数部分。
Math.Floor 和 Fix 函数都移除 Number 的小数部分并返回得到的整数值。
Math.Floor 和 Fix 函数之间的区别在于:如果 Number 为负,则 Math.Floor 返回小于或等于 Number 的第一个负整数,而 Fix 返回大于或等于 Number 的第一个负整数。例如,Math.Floor 将 -8.4 转换成 -9,而 Fix 将 -8.4 转换成 -8。
你的要求:如果你的要求是直接舍去,那么应当采用Fix方法,考虑到时负数的情况,那么采用Math.Floor将会出现非预期的结果。
测试结果:见附图。
欢迎交流。
VB用Format 函数来实现。
Format 函数,返回 Variant (String),其中含有一个表达式,它是根据格式表达式中的指令来格式化的。
Private Sub Command3_Click()
Print Format(5 / 256, "#.##")
End Sub
private sub text1_change()
text1.text=format(val(text1.text),"0.00")
end sub
'最多两位小数,可以没有或者一位
Private Sub TestReg(strData As String)
Dim zq As Boolean
Dim reg As Object
Dim matchs As Object, match As Object
Set reg = CreateObject("vbscript.regExp")
reg.Global = True
reg.IgnoreCase = True
reg.MultiLine = True
reg.Pattern = "^(?!0+(?:\.0+)?$)(?:[1-9]\d*|0)(?:\.\d{1,2})?$"
Set matchs = reg.Execute(strData)
For Each match In matchs
strData = match
zq = True
Next
If zq = False Then strData = "" '清空文本框数据,你也可以改为其他提示
End Sub
Private Sub Command1_Click()
Dim strData As String
strData = Text1.Text
TestReg strData
Text1.Text = strData
End Sub