Board logo

標題: [發問] 判斷是否為數字型態最快的方法? [打印本頁]

作者: PKKO    時間: 2015-4-5 13:57     標題: 判斷是否為數字型態最快的方法?

各位大大好,

以下是我寫的方式,想請問各位大大

是否有更快的方式可以判別出

某陣列中的值

是否為純數字(只有正的數字,沒有+-.等符號)
  1. myArray = Array("!@$!$222", "1122")
  2.     For Each e In myArray
  3.         For i = 1 To Len(e)
  4.             If IsNumeric(Mid(e, i, 1)) = False Then
  5.                 check = False
  6.                 Exit For
  7.             End If
  8.         Next
  9.     Next
複製代碼

作者: bobomi    時間: 2015-4-5 15:45

本帖最後由 bobomi 於 2015-4-5 15:47 編輯

dim d as double

    For Each e In myArray  '確定要的值 含0的話 用這個
        check = IsNumeric(e)
        If check Then
           d = e
           check = d >= 0 And (d - Fix(d)) = 0
        End If
    Next
'====
    For Each e In myArray  '確定要的值 不含0的話 用這個
        d = Val(e)
        If d > 0 Then
           check = (d - Fix(d)) = 0
        End If
    Next
作者: PKKO    時間: 2015-4-6 14:40

回復 2# bobomi


    感謝,沒想到有FIX這種檢查方式

但還想再追問一下,若只想把非數字都去掉呢?(只留下純數字, + 、 ^ * - 都不要)

ex: 111.11  =>11111
EX: .11^1   =>111

如果要達到這種只取出純數字
是不是只能用我原本的方式徒法煉鋼?
作者: bobomi    時間: 2015-4-6 16:52

[如果要達到這種只取出純數字]

運算次數少的話用你那個就好了
運算次數多的話 , 用正則應該是還可以快個2,3倍

但下面也會比你快
      k = Asc(Mid(e, i, 1))
      check = k >= 48 And k <= 57
作者: PKKO    時間: 2015-4-7 00:02

回復 4# bobomi


    多謝!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)