아래 코드는 내가 작성한 기본 변환을위한 프로젝트에서 사용했습니다. 두 개의 작은 숫자의 나머지 부분을 얻는 것은 정상적으로 작동하지만 예를 들어 두 개의 큰 숫자의 나머지 부분을 얻으려고 할 때 - 1.03475761285374E + 33은 0을 반환합니다. 두 배를 나누고 나머지를 얻는 방법이 있습니까? 실제로 코드가 무엇을하는지 분석없이복식 나누기 반환 0
Function Base58Value(sInput As String) As String
'reverse the input
sInput = StrReverse(sInput)
'get the length of the input string
Dim inputLen As Long
inputLen = Len(sInput)
'set up an array for each character
Dim sCharacter() As Integer
ReDim sCharacter(inputLen)
'set up an array for step 2 - index times 8 to the 2nd power
Dim sStep2() As Double
ReDim sStep2(inputLen)
'set up an array or step 3
Dim sStep3() As Double
ReDim sStep3(inputLen)
Dim sFinalNumber As Double
For x = 1 To inputLen
curchar$ = Mid(sInput, x, 1)
sCharacter(x) = Asc(curchar)
sStep2(x) = 2^((x - 1) * 8)
sStep3(x) = sCharacter(x) * sStep2(x)
sFinalNumber = sFinalNumber + sStep3(x)
Next x
Dim sRemainder() As Integer
ReDim sRemainder(0)
Dim sValue As Double
sValue = sFinalNumber
Dim sNextValue As Double
Dim sIter As Long
sIter = 0
Do Until Fix(sValue) = 0
DoEvents
ReDim Preserve sRemainder(sIter + 1)
sRemainder(sIter) = sMod(Fix(sValue), 58)
sValue = Fix(sValue/58)
sIter = sIter + 1
Loop
Dim ConversionTable$
ConversionTable = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
Dim addValues As String
addValues = ""
Dim xI As Integer
For xI = 0 To UBound(sRemainder) - 1
DoEvents
List1.AddItem (sRemainder(xI))
addValues = addValues + Mid(ConversionTable, sRemainder(xI) + 1, 1)
Next xI
Base58Value = StrReverse(addValues)
End Function
Public Function sMod(a, b)
Dim x As Variant
x = a/b
x = x - Fix(x)
x = x * b
sMod = x
End Function
큰 숫자의 눈금을 1E20으로 나눈 값을 곱한 다음 그 결과를 같은 값으로 곱하십시오. –