VB6.0 获取N位有效数字方法
最近一直在维护公司的一个老程序,需要一个获取N为有效数字的方法。我感觉自己还真是没念过书,客户给我说N位有效数字时。我几次以为是N位有效小数.在GOOGLE,BAIDU都没有找到代码,只能自己写。水平有限,需要的朋友可能拿去直接用,一下代码经过测试。
代码
Function 获取N位有效数字(str数值 As String, int有效位数 As Integer) As String '获取N位有效数字,小数最后一会不要是0
Dim tempsz As Double
Dim 整数位数 As Integer, 整数值 As Long, 有效数字个数 As Integer, 有效数字最后一会位置 As Integer
Dim 是否增加 As Boolean
tempsz = Val(str数值)
整数值 = Int(tempsz)
整数位数 = Len(CStr(整数值))
If tempsz = 0 Or int有效位数 <= 0 Then
获取N位有效数字 = "0"
Exit Function
End If
If 整数位数 > int有效位数 Then
获取N位有效数字 = Round(tempsz / (10 ^ (整数位数 - int有效位数)), 0)
获取N位有效数字 = Val(获取N位有效数字) * (10 ^ (整数位数 - int有效位数))
获取N位有效数字 = CStr(Int(Val(获取N位有效数字)))
Exit Function
End If
If 整数值 >= 1 Then
获取N位有效数字 = CStr(Round(tempsz, int有效位数 - 整数位数))
If int有效位数 <> 整数位数 Then
获取N位有效数字 = Format(获取N位有效数字, "#0." & 字符串重复函数("0", int有效位数 - 整数位数))
End If
Exit Function
Else
lens = Len(str数值)
有效数字个数 = 0
获取N位有效数字 = ""
是否增加 = False
For n = 1 To lens
ws = Mid(str数值, n, 1)
If 有效数字个数 < int有效位数 Then
获取N位有效数字 = 获取N位有效数字 & ws
If (ws = "0" And 是否增加) Or Val(ws) > 0 Then
是否增加 = True
有效数字个数 = 有效数字个数 + 1
If 有效数字个数 = int有效位数 Then
有效数字最后一会位置 = n
End If
End If
End If
Next
If 有效数字个数 < int有效位数 Then
获取N位有效数字 = 获取N位有效数字 & 字符串重复函数("0", int有效位数 - 有效数字个数)
Else
获取N位有效数字 = "0" & CStr(Round(tempsz * 10 ^ (有效数字最后一会位置 - 2), 0) / (10 ^ (有效数字最后一会位置 - 2)))
End If
End If
End Function
Function 字符串重复函数(str字符串 As String, int重复次数 As Integer) As String
字符串重复函数 = ""
For i = 1 To int重复次数
字符串重复函数 = 字符串重复函数 & str字符串
Next
End Function
Dim tempsz As Double
Dim 整数位数 As Integer, 整数值 As Long, 有效数字个数 As Integer, 有效数字最后一会位置 As Integer
Dim 是否增加 As Boolean
tempsz = Val(str数值)
整数值 = Int(tempsz)
整数位数 = Len(CStr(整数值))
If tempsz = 0 Or int有效位数 <= 0 Then
获取N位有效数字 = "0"
Exit Function
End If
If 整数位数 > int有效位数 Then
获取N位有效数字 = Round(tempsz / (10 ^ (整数位数 - int有效位数)), 0)
获取N位有效数字 = Val(获取N位有效数字) * (10 ^ (整数位数 - int有效位数))
获取N位有效数字 = CStr(Int(Val(获取N位有效数字)))
Exit Function
End If
If 整数值 >= 1 Then
获取N位有效数字 = CStr(Round(tempsz, int有效位数 - 整数位数))
If int有效位数 <> 整数位数 Then
获取N位有效数字 = Format(获取N位有效数字, "#0." & 字符串重复函数("0", int有效位数 - 整数位数))
End If
Exit Function
Else
lens = Len(str数值)
有效数字个数 = 0
获取N位有效数字 = ""
是否增加 = False
For n = 1 To lens
ws = Mid(str数值, n, 1)
If 有效数字个数 < int有效位数 Then
获取N位有效数字 = 获取N位有效数字 & ws
If (ws = "0" And 是否增加) Or Val(ws) > 0 Then
是否增加 = True
有效数字个数 = 有效数字个数 + 1
If 有效数字个数 = int有效位数 Then
有效数字最后一会位置 = n
End If
End If
End If
Next
If 有效数字个数 < int有效位数 Then
获取N位有效数字 = 获取N位有效数字 & 字符串重复函数("0", int有效位数 - 有效数字个数)
Else
获取N位有效数字 = "0" & CStr(Round(tempsz * 10 ^ (有效数字最后一会位置 - 2), 0) / (10 ^ (有效数字最后一会位置 - 2)))
End If
End If
End Function
Function 字符串重复函数(str字符串 As String, int重复次数 As Integer) As String
字符串重复函数 = ""
For i = 1 To int重复次数
字符串重复函数 = 字符串重复函数 & str字符串
Next
End Function