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