例如:
整数部分能取值到百位数的直接取整,比如102.98取整后等于10;  54.76取整后等于54;-65.3取整为-65
不足两位的,比如1.432处理结果14;-0.987处理结果-98 ;0.0144处理结果14
我将处理逻辑归纳为:整数,小数(只处理到小数点后4位,大于4位的直接返回0)
整数部分:分为大于等于2位的直接取值和不满足两位乘以10后取值
小数部分:直接乘以10000取前两位
逻辑好理解但是本人的编程水平太差了,只能求教各位老师了。

解决方案 »

  1.   

    楼主看看这个如何:
    Option ExplicitPrivate Function ValueTransform(ByVal dVal As Double) As Long
       Dim iFlag   As Long
       Dim v As Long   iFlag = 1& Or (dVal < 0)
       dVal = Abs(dVal)
       If (dVal < 10) Then
          dVal = 10000# * dVal
       Else
          Do
             If (dVal < 1000000#) Then Exit Do
             dVal = dVal / 10000#
          Loop
       End If
       v = Int(dVal)
       Do
          If (v < 100&) Then Exit Do
          v = v \ 10&
       Loop
       ValueTransform = iFlag * v
    End FunctionPrivate Sub Command1_Click()
       Debug.Print "-3555 = ", ValueTransform(-3555)
       Debug.Print "-0.00123 = ", ValueTransform(-0.00123)
       Debug.Print "0.000089 = ", ValueTransform(0.000089)
       Debug.Print "-73555 = ", ValueTransform(-73555)
       Debug.Print "-65.3 = ", ValueTransform(-65.3)
       Debug.Print "1.432 = ", ValueTransform(1.432)
       ' 用“字符串”也可以,但必须是合法的“数值格式”
       Debug.Print "-0.987 = ", ValueTransform("-0.987e56")
    End Sub
    ' 测试结果:
    '-3555 =       -35
    '-0.00123 =    -12
    '0.00008 =      0
    '-73555 =      -73
    '-65.3 =       -65
    '1.432 =        14
    '-0.987e56 =   -98