找call写call吧 关注:96贴子:951
  • 0回复贴,共1

解决数值过长计算错误

只看楼主收藏回复

解决数值过长计算错误
作者:瑞祥幽冥狼
用户遇见情况:
数值1="485136841646923285"
数值2="485136841646922472"
TracePrint 数值1-数值2
'按键调试输出结果是768
检查原因:
数值1="485136841646923285"/1
TracePrint 数值1
'按键调试输出结果4.85136841646923E+17
'原因确认数值过长进入了科学计数
解决思路1:(数值1、数值2分成1个个写入数组模拟人思维,一位位计算)
Dim 数据1(),数据2(),数据3()
数值1="485136841646923285"
数值2="485136841646922472"
数值1 = StrReverse(数值1)
数值2=StrReverse(数值2)
For i = 1 To len(数值1)
Redim Preserve 数据1(i)
数据1(i) = Mid(数值1, i, 1)
//TracePrint 数据1(i)
Next
For i = 1 To len(数值2)
Redim Preserve 数据2(i)
数据2(i) = Mid(数值2, i, 1)
// TracePrint 数据2(i)
Next
If UBound(数据1) >= UBound(数据2) Then
最大 = UBound(数据1)
Else
最大 = UBound(数据2)
End If
For i = 1 To 最大
//TracePrint 数据1(i)
If 数据1(i)/1 >= 数据2(i)/1 Then
Redim Preserve 数据3(i)
数据3(i) = 数据1(i) / 1 - 数据2(i) / 1
Else
Redim Preserve 数据3(i)
数据3(i) = (数据1(i) / 1+10) - 数据2(i) / 1
数据1(i+1)=数据1(i+1)-1
End If
// TracePrint i
TracePrint 数据2(i)&"---"&数据1(i)
TracePrint 数据3(i)
Next
TracePrint StrReverse(join(数据3,""))


IP属地:广东来自Android客户端1楼2022-05-15 10:41回复