close
How many 0's? (.NET).NET的使用者可以使用以下程式碼取代原先的HMOs_zero函數使用Mod與"\"整除運算子代替字串處裡,在VB6中容易溢位但在.NET中測試效率較字串處理高上不少 1: Private Function HMOs_zero(ByVal N As Double) As Double 2: If N < 0 Then 3: HMOs_zero = 0 4: Exit Function 5: End If 6: 7: Dim b As Byte 8: Dim max_level As Integer 9: Dim count As Double 10: Dim i As Integer 11: Dim str_N As String 12: 13: str_N = CStr(N) 14: count = 1 15: max_level = Strings.Len(CStr(N)) 16: 17: '以整除"\"與餘數Mod運算子代替字串處裡, VB6中使用很容易溢位 18: For i = max_level To 2 Step -1 19: b = N \ 10 ^ (i - 1) 20: N = N Mod 10 ^ (i - 1) 21: count = count + CDbl(b) * (i - 1) * 10 ^ (i - 2) 22: Next 23: 24: '以下為誤差修正 25: Dim leave_N As Double 26: Dim tmp_N As Double 27: 28: leave_N = N Mod 10 29: N = CDbl(str_N) \ 10 30: i = 1 31: Do While N 32: tmp_N = N Mod 10 33: If tmp_N = 0 Then 34: count = count - (10 ^ i - 1 - leave_N) 35: End If 36: leave_N = leave_N + tmp_N * 10 ^ i 37: N = N \ 10 38: i = i + 1 39: Loop 40: 41: HMOs_zero = count 42: End Function.
全站熱搜
留言列表