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.
arrow
arrow
    全站熱搜

    bb111561 發表在 痞客邦 留言(0) 人氣()