VB6.0 获取N位有效数字方法

 最近一直在维护公司的一个老程序,需要一个获取N为有效数字的方法。我感觉自己还真是没念过书,客户给我说N位有效数字时。我几次以为是N位有效小数.在GOOGLE,BAIDU都没有找到代码,只能自己写。水平有限,需要的朋友可能拿去直接用,一下代码经过测试。
代码
Function 获取N位有效数字(str数值 As String, int有效位数 As IntegerAs 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 IntegerAs String
    字符串重复函数 
= ""
    
For i = 1 To int重复次数
        字符串重复函数 
= 字符串重复函数 & str字符串
    
Next
End Function

原文地址:https://www.cnblogs.com/qzdotnet/p/1663863.html