Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Imports System.Numerics
- Public Structure BigDecimal
- Private Shared _Rnd As New Random
- Private Value As BigInteger
- Private MLen As Integer
- Private Shared _P As Integer = 64
- Public Shared ReadOnly NegativeOne As New BigDecimal(-1)
- Public Shared ReadOnly Zero As New BigDecimal(0)
- Public Shared ReadOnly ZeroPointFive As New BigDecimal(0.5)
- Public Shared ReadOnly One As New BigDecimal(1)
- Public Shared ReadOnly Two As New BigDecimal(2)
- Public Shared ReadOnly ThreePointTwo As New BigDecimal(3.2)
- Public Shared ReadOnly Four As New BigDecimal(4)
- Public Shared ReadOnly Five As New BigDecimal(5)
- Public Shared ReadOnly TwentyFive As New BigDecimal(25)
- Public Shared ReadOnly TwoHundredThirtyNine As New BigDecimal(239)
- Public Shared ReadOnly FiftySevenThousandOneHundredTwentyOne As New BigDecimal(57121)
- #Region "Properties"
- Public Shared Property GlobalAccuracy() As Integer
- Get
- Return _P
- End Get
- Set(value As Integer)
- _P = value
- End Set
- End Property
- Public ReadOnly Property MantissaLength() As Integer
- Get
- Return MLen
- End Get
- End Property
- Public ReadOnly Property IsOne() As Boolean
- Get
- If MLen = 0 Then Return Value.IsOne Else Return False
- End Get
- End Property
- Public ReadOnly Property IsZero() As Boolean
- Get
- Return Value.IsZero
- End Get
- End Property
- Public ReadOnly Property Sign() As Integer
- Get
- Return Value.Sign
- End Get
- End Property
- Public ReadOnly Property IsPowerOfTwo() As Boolean
- Get
- If MLen = 0 AndAlso Value.IsPowerOfTwo Then Return True Else Return False
- End Get
- End Property
- Public ReadOnly Property IsEven As Boolean
- Get
- If MLen = 0 AndAlso Value.IsEven Then Return True Else Return False
- End Get
- End Property
- #End Region
- #Region "Constructors"
- Public Sub New(ByVal N As String)
- If N.StartsWith("#") Then N = N.Remove(0, 1) Else N = FormatString(N)
- Dim Dec As Integer = N.IndexOf(".")
- If Dec > -1 Then MLen = N.Length - (Dec + 1) Else MLen = 0
- Value = BigInteger.Parse(N.Replace(".", ""))
- End Sub
- Public Sub New(ByVal N As Decimal, Optional ByVal M As Integer = 0)
- Dim Str As String = N
- Dim Dec As Integer = Str.IndexOf(".")
- If Dec > -1 Then MLen = Str.Length - (Dec + 1) Else MLen = M
- Value = BigInteger.Parse(N.ToString.Replace("."c, ""))
- End Sub
- Public Sub New(ByVal N As Single, Optional ByVal M As Integer = 0)
- Dim Str As String = N
- Dim Dec As Integer = Str.IndexOf(".")
- If Dec > -1 Then MLen = Str.Length - (Dec + 1) Else MLen = M
- Value = BigInteger.Parse(N.ToString.Replace("."c, ""))
- End Sub
- Public Sub New(ByVal N As Double, Optional ByVal M As Integer = 0)
- Dim Str As String = N
- Dim Dec As Integer = Str.IndexOf(".")
- If Dec > -1 Then MLen = Str.Length - (Dec + 1) Else MLen = M
- Value = BigInteger.Parse(N.ToString.Replace("."c, ""))
- End Sub
- Public Sub New(ByVal N() As Byte)
- MLen = BitConverter.ToInt32({N(0), N(1), N(2), N(3)}, 0)
- Dim VBytes(N.Length - 5) As Byte
- Array.Copy(N, 4, VBytes, 0, VBytes.Length)
- Value = New BigInteger(VBytes)
- End Sub
- Public Sub New(ByVal N As BigInteger, Optional ByVal M As Integer = 0)
- Value = N
- MLen = M
- End Sub
- Public Sub New(ByVal N As Integer, Optional ByVal M As Integer = 0)
- Value = New BigInteger(N)
- MLen = M
- End Sub
- Public Sub New(ByVal N As Long, Optional ByVal M As Integer = 0)
- Value = New BigInteger(N)
- MLen = M
- End Sub
- Public Sub New(ByVal N As UInteger, Optional ByVal M As Integer = 0)
- Value = New BigInteger(N)
- MLen = M
- End Sub
- Public Sub New(ByVal N As ULong, Optional ByVal M As Integer = 0)
- Value = New BigInteger(N)
- MLen = M
- End Sub
- Public Sub New(ByVal N As Short, Optional ByVal M As Integer = 0)
- Value = New BigInteger(N)
- MLen = M
- End Sub
- Public Sub New(ByVal N As UShort, Optional ByVal M As Integer = 0)
- Value = New BigInteger(N)
- MLen = M
- End Sub
- Public Sub New(ByVal N As Byte, Optional ByVal M As Integer = 0)
- Value = New BigInteger(N)
- MLen = M
- End Sub
- Public Sub New(ByVal N As SByte, Optional ByVal M As Integer = 0)
- Value = New BigInteger(N)
- MLen = M
- End Sub
- #End Region
- #Region "Convert"
- Public Shared Widening Operator CType(ByVal N As BigDecimal) As Byte()
- Return N.ToByteArray
- End Operator
- Public Shared Widening Operator CType(ByVal N() As Byte) As BigDecimal
- Return New BigDecimal(N)
- End Operator
- Public Shared Widening Operator CType(ByVal N As BigDecimal) As String
- Return N.ToString
- End Operator
- Public Shared Widening Operator CType(ByVal N As String) As BigDecimal
- Select Case N
- Case "-1"
- Return NegativeOne
- Case "0"
- Return Zero
- Case "0.5"
- Return ZeroPointFive
- Case "1"
- Return One
- Case "2"
- Return Two
- Case "3.2"
- Return ThreePointTwo
- Case "4"
- Return Four
- Case "5"
- Return Five
- Case "25"
- Return TwentyFive
- Case "239"
- Return TwoHundredThirtyNine
- Case "57121"
- Return FiftySevenThousandOneHundredTwentyOne
- Case Else
- Return New BigDecimal(N)
- End Select
- End Operator
- Public Shared Widening Operator CType(ByVal N As BigInteger) As BigDecimal
- Select Case N
- Case -1
- Return NegativeOne
- Case 0
- Return Zero
- Case 1
- Return One
- Case 2
- Return Two
- Case 4
- Return Four
- Case 5
- Return Five
- Case 25
- Return TwentyFive
- Case 239
- Return TwoHundredThirtyNine
- Case 57121
- Return FiftySevenThousandOneHundredTwentyOne
- Case Else
- Return New BigDecimal(N)
- End Select
- End Operator
- Public Shared Widening Operator CType(ByVal N As Decimal) As BigDecimal
- Select Case N
- Case -1
- Return NegativeOne
- Case 0
- Return Zero
- Case 0.5
- Return ZeroPointFive
- Case 1
- Return One
- Case 2
- Return Two
- Case 3.2
- Return ThreePointTwo
- Case 4
- Return Four
- Case 5
- Return Five
- Case 25
- Return TwentyFive
- Case 239
- Return TwoHundredThirtyNine
- Case 57121
- Return FiftySevenThousandOneHundredTwentyOne
- Case Else
- Return New BigDecimal(N)
- End Select
- End Operator
- Public Shared Widening Operator CType(ByVal N As Double) As BigDecimal
- Select Case N
- Case -1
- Return NegativeOne
- Case 0
- Return Zero
- Case 0.5
- Return ZeroPointFive
- Case 1
- Return One
- Case 2
- Return Two
- Case 3.2
- Return ThreePointTwo
- Case 4
- Return Four
- Case 5
- Return Five
- Case 25
- Return TwentyFive
- Case 239
- Return TwoHundredThirtyNine
- Case 57121
- Return FiftySevenThousandOneHundredTwentyOne
- Case Else
- Return New BigDecimal(N)
- End Select
- End Operator
- Public Shared Widening Operator CType(ByVal N As Single) As BigDecimal
- Select Case N
- Case -1
- Return NegativeOne
- Case 0
- Return Zero
- Case 0.5
- Return ZeroPointFive
- Case 1
- Return One
- Case 2
- Return Two
- Case 3.2
- Return ThreePointTwo
- Case 4
- Return Four
- Case 5
- Return Five
- Case 25
- Return TwentyFive
- Case 239
- Return TwoHundredThirtyNine
- Case 57121
- Return FiftySevenThousandOneHundredTwentyOne
- Case Else
- Return New BigDecimal(N)
- End Select
- End Operator
- Public Shared Widening Operator CType(ByVal N As Integer) As BigDecimal
- Select Case N
- Case -1
- Return NegativeOne
- Case 0
- Return Zero
- Case 1
- Return One
- Case 2
- Return Two
- Case 4
- Return Four
- Case 5
- Return Five
- Case 25
- Return TwentyFive
- Case 239
- Return TwoHundredThirtyNine
- Case 57121
- Return FiftySevenThousandOneHundredTwentyOne
- Case Else
- Return New BigDecimal(N)
- End Select
- End Operator
- Public Shared Widening Operator CType(ByVal N As Long) As BigDecimal
- Select Case N
- Case -1
- Return NegativeOne
- Case 0
- Return Zero
- Case 1
- Return One
- Case 2
- Return Two
- Case 4
- Return Four
- Case 5
- Return Five
- Case 25
- Return TwentyFive
- Case 239
- Return TwoHundredThirtyNine
- Case 57121
- Return FiftySevenThousandOneHundredTwentyOne
- Case Else
- Return New BigDecimal(N)
- End Select
- End Operator
- Public Shared Widening Operator CType(ByVal N As UInteger) As BigDecimal
- Select Case N
- Case 0
- Return Zero
- Case 1
- Return One
- Case 2
- Return Two
- Case 4
- Return Four
- Case 5
- Return Five
- Case 25
- Return TwentyFive
- Case 239
- Return TwoHundredThirtyNine
- Case 57121
- Return FiftySevenThousandOneHundredTwentyOne
- Case Else
- Return New BigDecimal(N)
- End Select
- End Operator
- Public Shared Widening Operator CType(ByVal N As ULong) As BigDecimal
- Select Case N
- Case 0
- Return Zero
- Case 1
- Return One
- Case 2
- Return Two
- Case 4
- Return Four
- Case 5
- Return Five
- Case 25
- Return TwentyFive
- Case 239
- Return TwoHundredThirtyNine
- Case 57121
- Return FiftySevenThousandOneHundredTwentyOne
- Case Else
- Return New BigDecimal(N)
- End Select
- End Operator
- Public Shared Widening Operator CType(ByVal N As UShort) As BigDecimal
- Select Case N
- Case 0
- Return Zero
- Case 1
- Return One
- Case 2
- Return Two
- Case 4
- Return Four
- Case 5
- Return Five
- Case 25
- Return TwentyFive
- Case 239
- Return TwoHundredThirtyNine
- Case 57121
- Return FiftySevenThousandOneHundredTwentyOne
- Case Else
- Return New BigDecimal(N)
- End Select
- End Operator
- Public Shared Widening Operator CType(ByVal N As Byte) As BigDecimal
- Select Case N
- Case 0
- Return Zero
- Case 1
- Return One
- Case 2
- Return Two
- Case 4
- Return Four
- Case 5
- Return Five
- Case 25
- Return TwentyFive
- Case 239
- Return TwoHundredThirtyNine
- Case Else
- Return New BigDecimal(N)
- End Select
- End Operator
- Public Shared Widening Operator CType(ByVal N As SByte) As BigDecimal
- Select Case N
- Case -1
- Return NegativeOne
- Case 0
- Return Zero
- Case 1
- Return One
- Case 2
- Return Two
- Case 4
- Return Four
- Case 5
- Return Five
- Case 25
- Return TwentyFive
- Case Else
- Return New BigDecimal(N)
- End Select
- End Operator
- Public Shared Widening Operator CType(ByVal N As Short) As BigDecimal
- Select Case N
- Case -1
- Return NegativeOne
- Case 0
- Return Zero
- Case 1
- Return One
- Case 2
- Return Two
- Case 4
- Return Four
- Case 5
- Return Five
- Case 25
- Return TwentyFive
- Case 239
- Return TwoHundredThirtyNine
- Case Else
- Return New BigDecimal(N)
- End Select
- End Operator
- #End Region
- #Region "+"
- Public Shared Operator +(ByVal N1 As BigDecimal, ByVal N2 As BigDecimal) As BigDecimal
- If N1.MLen = N2.MLen Then
- Return New BigDecimal(N1.Value + N2.Value, N1.MLen)
- Else
- If N1.MLen > N2.MLen _
- Then Return New BigDecimal(N1.Value + N2.Value * BigInteger.Pow(10, N1.MLen - N2.MLen), N1.MLen) _
- Else Return New BigDecimal(N2.Value + N1.Value * BigInteger.Pow(10, N2.MLen - N1.MLen), N2.MLen)
- End If
- End Operator
- Public Shared Operator +(ByVal N1 As BigDecimal, ByVal N2 As String) As BigDecimal
- Return N1 + New BigDecimal(N2)
- End Operator
- Public Shared Operator +(ByVal N1 As String, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) + N2
- End Operator
- Public Shared Operator +(ByVal N1 As BigDecimal, ByVal N2 As BigInteger) As BigDecimal
- Return N1 + New BigDecimal(N2)
- End Operator
- Public Shared Operator +(ByVal N1 As BigInteger, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) + N2
- End Operator
- Public Shared Operator +(ByVal N1 As BigDecimal, ByVal N2 As Decimal) As BigDecimal
- Return N1 + New BigDecimal(N2)
- End Operator
- Public Shared Operator +(ByVal N1 As Decimal, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) + N2
- End Operator
- Public Shared Operator +(ByVal N1 As BigDecimal, ByVal N2 As Double) As BigDecimal
- Return N1 + New BigDecimal(N2)
- End Operator
- Public Shared Operator +(ByVal N1 As Double, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) + N2
- End Operator
- Public Shared Operator +(ByVal N1 As BigDecimal, ByVal N2 As Integer) As BigDecimal
- Return N1 + New BigDecimal(N2)
- End Operator
- Public Shared Operator +(ByVal N1 As Integer, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) + N2
- End Operator
- Public Shared Operator +(ByVal N1 As BigDecimal, ByVal N2 As Long) As BigDecimal
- Return N1 + New BigDecimal(N2)
- End Operator
- Public Shared Operator +(ByVal N1 As Long, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) + N2
- End Operator
- Public Shared Operator +(ByVal N1 As BigDecimal, ByVal N2 As Single) As BigDecimal
- Return N1 + New BigDecimal(N2)
- End Operator
- Public Shared Operator +(ByVal N1 As Single, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) + N2
- End Operator
- Public Shared Operator +(ByVal N1 As BigDecimal, ByVal N2 As UInteger) As BigDecimal
- Return N1 + New BigDecimal(N2)
- End Operator
- Public Shared Operator +(ByVal N1 As UInteger, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) + N2
- End Operator
- Public Shared Operator +(ByVal N1 As BigDecimal, ByVal N2 As ULong) As BigDecimal
- Return N1 + New BigDecimal(N2)
- End Operator
- Public Shared Operator +(ByVal N1 As ULong, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) + N2
- End Operator
- Public Shared Operator +(ByVal N1 As BigDecimal, ByVal N2 As UShort) As BigDecimal
- Return N1 + New BigDecimal(N2)
- End Operator
- Public Shared Operator +(ByVal N1 As UShort, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) + N2
- End Operator
- Public Shared Operator +(ByVal N1 As BigDecimal, ByVal N2 As Byte) As BigDecimal
- Return N1 + New BigDecimal(N2)
- End Operator
- Public Shared Operator +(ByVal N1 As Byte, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) + N2
- End Operator
- Public Shared Operator +(ByVal N1 As BigDecimal, ByVal N2 As SByte) As BigDecimal
- Return N1 + New BigDecimal(N2)
- End Operator
- Public Shared Operator +(ByVal N1 As SByte, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) + N2
- End Operator
- Public Shared Operator +(ByVal N1 As BigDecimal, ByVal N2 As Short) As BigDecimal
- Return N1 + New BigDecimal(N2)
- End Operator
- Public Shared Operator +(ByVal N1 As Short, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) + N2
- End Operator
- #End Region
- #Region "-"
- Public Shared Operator -(ByVal N1 As BigDecimal, ByVal N2 As BigDecimal) As BigDecimal
- If N1.MLen = N2.MLen Then
- Return New BigDecimal(N1.Value - N2.Value, N1.MLen)
- Else
- If N1.MLen > N2.MLen Then
- N2.Value *= BigInteger.Pow(10, N1.MLen - N2.MLen)
- Return New BigDecimal(N1.Value - N2.Value, N1.MLen)
- Else
- N1.Value *= BigInteger.Pow(10, N2.MLen - N1.MLen)
- Return New BigDecimal(N1.Value - N2.Value, N2.MLen)
- End If
- End If
- End Operator
- Public Shared Operator -(ByVal N1 As BigDecimal, ByVal N2 As String) As BigDecimal
- Return N1 - New BigDecimal(N2)
- End Operator
- Public Shared Operator -(ByVal N1 As String, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) - N2
- End Operator
- Public Shared Operator -(ByVal N1 As BigDecimal, ByVal N2 As BigInteger) As BigDecimal
- Return N1 - New BigDecimal(N2)
- End Operator
- Public Shared Operator -(ByVal N1 As BigInteger, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) - N2
- End Operator
- Public Shared Operator -(ByVal N1 As BigDecimal, ByVal N2 As Decimal) As BigDecimal
- Return N1 - New BigDecimal(N2)
- End Operator
- Public Shared Operator -(ByVal N1 As Decimal, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) - N2
- End Operator
- Public Shared Operator -(ByVal N1 As BigDecimal, ByVal N2 As Double) As BigDecimal
- Return N1 - New BigDecimal(N2)
- End Operator
- Public Shared Operator -(ByVal N1 As Double, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) - N2
- End Operator
- Public Shared Operator -(ByVal N1 As BigDecimal, ByVal N2 As Integer) As BigDecimal
- Return N1 - New BigDecimal(N2)
- End Operator
- Public Shared Operator -(ByVal N1 As Integer, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) - N2
- End Operator
- Public Shared Operator -(ByVal N1 As BigDecimal, ByVal N2 As Long) As BigDecimal
- Return N1 - New BigDecimal(N2)
- End Operator
- Public Shared Operator -(ByVal N1 As Long, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) - N2
- End Operator
- Public Shared Operator -(ByVal N1 As BigDecimal, ByVal N2 As Single) As BigDecimal
- Return N1 - New BigDecimal(N2)
- End Operator
- Public Shared Operator -(ByVal N1 As Single, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) - N2
- End Operator
- Public Shared Operator -(ByVal N1 As BigDecimal, ByVal N2 As UInteger) As BigDecimal
- Return N1 - New BigDecimal(N2)
- End Operator
- Public Shared Operator -(ByVal N1 As UInteger, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) - N2
- End Operator
- Public Shared Operator -(ByVal N1 As BigDecimal, ByVal N2 As ULong) As BigDecimal
- Return N1 - New BigDecimal(N2)
- End Operator
- Public Shared Operator -(ByVal N1 As ULong, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) - N2
- End Operator
- Public Shared Operator -(ByVal N1 As BigDecimal, ByVal N2 As UShort) As BigDecimal
- Return N1 - New BigDecimal(N2)
- End Operator
- Public Shared Operator -(ByVal N1 As UShort, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) - N2
- End Operator
- Public Shared Operator -(ByVal N1 As BigDecimal, ByVal N2 As Byte) As BigDecimal
- Return N1 - New BigDecimal(N2)
- End Operator
- Public Shared Operator -(ByVal N1 As Byte, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) - N2
- End Operator
- Public Shared Operator -(ByVal N1 As BigDecimal, ByVal N2 As SByte) As BigDecimal
- Return N1 - New BigDecimal(N2)
- End Operator
- Public Shared Operator -(ByVal N1 As SByte, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) - N2
- End Operator
- Public Shared Operator -(ByVal N1 As BigDecimal, ByVal N2 As Short) As BigDecimal
- Return N1 - New BigDecimal(N2)
- End Operator
- Public Shared Operator -(ByVal N1 As Short, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) - N2
- End Operator
- #End Region
- #Region "*"
- Public Shared Operator *(ByVal N1 As BigDecimal, ByVal N2 As BigDecimal) As BigDecimal
- If N1.MLen = N2.MLen Then Return New BigDecimal(N1.Value * N2.Value, N1.MLen * 2)
- Return New BigDecimal(N1.Value * N2.Value, N1.MLen + N2.MLen)
- End Operator
- Public Shared Operator *(ByVal N1 As BigDecimal, ByVal N2 As String) As BigDecimal
- Return N1 * New BigDecimal(N2)
- End Operator
- Public Shared Operator *(ByVal N1 As String, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) * N2
- End Operator
- Public Shared Operator *(ByVal N1 As BigDecimal, ByVal N2 As BigInteger) As BigDecimal
- Return N1 * New BigDecimal(N2)
- End Operator
- Public Shared Operator *(ByVal N1 As BigInteger, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) * N2
- End Operator
- Public Shared Operator *(ByVal N1 As BigDecimal, ByVal N2 As Decimal) As BigDecimal
- Return N1 * New BigDecimal(N2)
- End Operator
- Public Shared Operator *(ByVal N1 As Decimal, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) * N2
- End Operator
- Public Shared Operator *(ByVal N1 As BigDecimal, ByVal N2 As Double) As BigDecimal
- Return N1 * New BigDecimal(N2)
- End Operator
- Public Shared Operator *(ByVal N1 As Double, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) * N2
- End Operator
- Public Shared Operator *(ByVal N1 As BigDecimal, ByVal N2 As Integer) As BigDecimal
- Return N1 * New BigDecimal(N2)
- End Operator
- Public Shared Operator *(ByVal N1 As Integer, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) * N2
- End Operator
- Public Shared Operator *(ByVal N1 As BigDecimal, ByVal N2 As Long) As BigDecimal
- Return N1 * New BigDecimal(N2)
- End Operator
- Public Shared Operator *(ByVal N1 As Long, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) * N2
- End Operator
- Public Shared Operator *(ByVal N1 As BigDecimal, ByVal N2 As Single) As BigDecimal
- Return N1 * New BigDecimal(N2)
- End Operator
- Public Shared Operator *(ByVal N1 As Single, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) * N2
- End Operator
- Public Shared Operator *(ByVal N1 As BigDecimal, ByVal N2 As UInteger) As BigDecimal
- Return N1 * New BigDecimal(N2)
- End Operator
- Public Shared Operator *(ByVal N1 As UInteger, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) * N2
- End Operator
- Public Shared Operator *(ByVal N1 As BigDecimal, ByVal N2 As ULong) As BigDecimal
- Return N1 * New BigDecimal(N2)
- End Operator
- Public Shared Operator *(ByVal N1 As ULong, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) * N2
- End Operator
- Public Shared Operator *(ByVal N1 As BigDecimal, ByVal N2 As UShort) As BigDecimal
- Return N1 * New BigDecimal(N2)
- End Operator
- Public Shared Operator *(ByVal N1 As UShort, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) * N2
- End Operator
- Public Shared Operator *(ByVal N1 As BigDecimal, ByVal N2 As Byte) As BigDecimal
- Return N1 * New BigDecimal(N2)
- End Operator
- Public Shared Operator *(ByVal N1 As Byte, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) * N2
- End Operator
- Public Shared Operator *(ByVal N1 As BigDecimal, ByVal N2 As SByte) As BigDecimal
- Return N1 * New BigDecimal(N2)
- End Operator
- Public Shared Operator *(ByVal N1 As SByte, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) * N2
- End Operator
- Public Shared Operator *(ByVal N1 As BigDecimal, ByVal N2 As Short) As BigDecimal
- Return N1 * New BigDecimal(N2)
- End Operator
- Public Shared Operator *(ByVal N1 As Short, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) * N2
- End Operator
- #End Region
- #Region "/"
- Public Shared Function Div(ByVal N1 As BigDecimal, ByVal N2 As BigDecimal, _
- Optional ByVal P As Integer = -1) As BigDecimal
- If P < 0 Then P = _P
- Dim D As Integer = Math.Abs(N1.MLen - N2.MLen)
- If N1.MLen >= N2.MLen Then
- N1.Value *= BigInteger.Pow(10, P)
- N2.Value *= BigInteger.Pow(10, D)
- Else
- N1.Value *= BigInteger.Pow(10, D + P)
- End If
- N1.Value /= N2.Value
- Return New BigDecimal(N1.Value, P)
- End Function
- Public Shared Operator /(ByVal N1 As BigDecimal, ByVal N2 As BigDecimal) As BigDecimal
- Return Div(N1, N2)
- End Operator
- Public Shared Operator /(ByVal N1 As BigDecimal, ByVal N2 As String) As BigDecimal
- Return Div(N1, New BigDecimal(N2))
- End Operator
- Public Shared Operator /(ByVal N1 As String, ByVal N2 As BigDecimal) As BigDecimal
- Return Div(New BigDecimal(N1), N2)
- End Operator
- Public Shared Operator /(ByVal N1 As BigDecimal, ByVal N2 As BigInteger) As BigDecimal
- Return Div(N1, New BigDecimal(N2))
- End Operator
- Public Shared Operator /(ByVal N1 As BigInteger, ByVal N2 As BigDecimal) As BigDecimal
- Return Div(New BigDecimal(N1), N2)
- End Operator
- Public Shared Operator /(ByVal N1 As BigDecimal, ByVal N2 As Decimal) As BigDecimal
- Return Div(N1, New BigDecimal(N2))
- End Operator
- Public Shared Operator /(ByVal N1 As Decimal, ByVal N2 As BigDecimal) As BigDecimal
- Return Div(New BigDecimal(N1), N2)
- End Operator
- Public Shared Operator /(ByVal N1 As BigDecimal, ByVal N2 As Double) As BigDecimal
- Return Div(N1, New BigDecimal(N2))
- End Operator
- Public Shared Operator /(ByVal N1 As Double, ByVal N2 As BigDecimal) As BigDecimal
- Return Div(New BigDecimal(N1), N2)
- End Operator
- Public Shared Operator /(ByVal N1 As BigDecimal, ByVal N2 As Integer) As BigDecimal
- Return Div(N1, New BigDecimal(N2))
- End Operator
- Public Shared Operator /(ByVal N1 As Integer, ByVal N2 As BigDecimal) As BigDecimal
- Return Div(New BigDecimal(N1), N2)
- End Operator
- Public Shared Operator /(ByVal N1 As BigDecimal, ByVal N2 As Long) As BigDecimal
- Return Div(N1, New BigDecimal(N2))
- End Operator
- Public Shared Operator /(ByVal N1 As Long, ByVal N2 As BigDecimal) As BigDecimal
- Return Div(New BigDecimal(N1), N2)
- End Operator
- Public Shared Operator /(ByVal N1 As BigDecimal, ByVal N2 As Single) As BigDecimal
- Return Div(N1, New BigDecimal(N2))
- End Operator
- Public Shared Operator /(ByVal N1 As Single, ByVal N2 As BigDecimal) As BigDecimal
- Return Div(New BigDecimal(N1), N2)
- End Operator
- Public Shared Operator /(ByVal N1 As BigDecimal, ByVal N2 As UInteger) As BigDecimal
- Return Div(N1, New BigDecimal(N2))
- End Operator
- Public Shared Operator /(ByVal N1 As UInteger, ByVal N2 As BigDecimal) As BigDecimal
- Return Div(New BigDecimal(N1), N2)
- End Operator
- Public Shared Operator /(ByVal N1 As BigDecimal, ByVal N2 As ULong) As BigDecimal
- Return Div(N1, New BigDecimal(N2))
- End Operator
- Public Shared Operator /(ByVal N1 As ULong, ByVal N2 As BigDecimal) As BigDecimal
- Return Div(New BigDecimal(N1), N2)
- End Operator
- Public Shared Operator /(ByVal N1 As BigDecimal, ByVal N2 As UShort) As BigDecimal
- Return Div(N1, New BigDecimal(N2))
- End Operator
- Public Shared Operator /(ByVal N1 As UShort, ByVal N2 As BigDecimal) As BigDecimal
- Return Div(New BigDecimal(N1), N2)
- End Operator
- Public Shared Operator /(ByVal N1 As BigDecimal, ByVal N2 As Byte) As BigDecimal
- Return Div(N1, New BigDecimal(N2))
- End Operator
- Public Shared Operator /(ByVal N1 As Byte, ByVal N2 As BigDecimal) As BigDecimal
- Return Div(New BigDecimal(N1), N2)
- End Operator
- Public Shared Operator /(ByVal N1 As BigDecimal, ByVal N2 As SByte) As BigDecimal
- Return Div(N1, New BigDecimal(N2))
- End Operator
- Public Shared Operator /(ByVal N1 As SByte, ByVal N2 As BigDecimal) As BigDecimal
- Return Div(New BigDecimal(N1), N2)
- End Operator
- Public Shared Operator /(ByVal N1 As BigDecimal, ByVal N2 As Short) As BigDecimal
- Return Div(N1, New BigDecimal(N2))
- End Operator
- Public Shared Operator /(ByVal N1 As Short, ByVal N2 As BigDecimal) As BigDecimal
- Return Div(New BigDecimal(N1), N2)
- End Operator
- #End Region
- #Region "^"
- Public Shared Function Pow(ByVal N1 As BigDecimal, ByVal N2 As Integer,
- Optional ByVal P As Integer = -1) As BigDecimal
- If N2 = 0 Then Return One
- If P < 0 Then P = _P
- If N2 < 0 Then
- N2 = Math.Abs(N2)
- Return Div(One, New BigDecimal(BigInteger.Pow(N1.Value, N2), N1.MLen * N2), P)
- Else
- Return Div(New BigDecimal(BigInteger.Pow(N1.Value, N2), N2 * N1.MLen), One, P)
- End If
- End Function
- Public Shared Operator ^(ByVal N1 As BigDecimal, ByVal N2 As Integer) As BigDecimal
- Return Pow(N1, N2)
- End Operator
- #End Region
- #Region "Mod"
- Public Shared Operator Mod(ByVal N1 As BigDecimal, ByVal N2 As BigDecimal) As BigDecimal
- If N2.Value.IsZero Then Throw New DivideByZeroException
- If N1 = One Then Return Zero
- If N1 = N2 Then Return Zero
- If N1.MLen >= N2.MLen _
- Then Return N1 - N2 * Floor(Div(N1, N2, N1.MLen)) _
- Else Return N1 - N2 * Floor(Div(N1, N2, N2.MLen))
- End Operator
- Public Shared Operator Mod(ByVal N1 As BigDecimal, ByVal N2 As String) As BigDecimal
- Return N1 Mod New BigDecimal(N2)
- End Operator
- Public Shared Operator Mod(ByVal N1 As String, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) Mod N2
- End Operator
- Public Shared Operator Mod(ByVal N1 As BigDecimal, ByVal N2 As BigInteger) As BigDecimal
- Return N1 Mod New BigDecimal(N2)
- End Operator
- Public Shared Operator Mod(ByVal N1 As BigInteger, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) Mod N2
- End Operator
- Public Shared Operator Mod(ByVal N1 As BigDecimal, ByVal N2 As Decimal) As BigDecimal
- Return N1 Mod New BigDecimal(N2)
- End Operator
- Public Shared Operator Mod(ByVal N1 As Decimal, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) Mod N2
- End Operator
- Public Shared Operator Mod(ByVal N1 As BigDecimal, ByVal N2 As Double) As BigDecimal
- Return N1 Mod New BigDecimal(N2)
- End Operator
- Public Shared Operator Mod(ByVal N1 As Double, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) Mod N2
- End Operator
- Public Shared Operator Mod(ByVal N1 As BigDecimal, ByVal N2 As Integer) As BigDecimal
- Return N1 Mod New BigDecimal(N2)
- End Operator
- Public Shared Operator Mod(ByVal N1 As Integer, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) Mod N2
- End Operator
- Public Shared Operator Mod(ByVal N1 As BigDecimal, ByVal N2 As Long) As BigDecimal
- Return N1 Mod New BigDecimal(N2)
- End Operator
- Public Shared Operator Mod(ByVal N1 As Long, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) Mod N2
- End Operator
- Public Shared Operator Mod(ByVal N1 As BigDecimal, ByVal N2 As Single) As BigDecimal
- Return N1 Mod New BigDecimal(N2)
- End Operator
- Public Shared Operator Mod(ByVal N1 As Single, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) Mod N2
- End Operator
- Public Shared Operator Mod(ByVal N1 As BigDecimal, ByVal N2 As UInteger) As BigDecimal
- Return N1 Mod New BigDecimal(N2)
- End Operator
- Public Shared Operator Mod(ByVal N1 As UInteger, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) Mod N2
- End Operator
- Public Shared Operator Mod(ByVal N1 As BigDecimal, ByVal N2 As ULong) As BigDecimal
- Return N1 Mod New BigDecimal(N2)
- End Operator
- Public Shared Operator Mod(ByVal N1 As ULong, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) Mod N2
- End Operator
- Public Shared Operator Mod(ByVal N1 As BigDecimal, ByVal N2 As UShort) As BigDecimal
- Return N1 Mod New BigDecimal(N2)
- End Operator
- Public Shared Operator Mod(ByVal N1 As UShort, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) Mod N2
- End Operator
- Public Shared Operator Mod(ByVal N1 As BigDecimal, ByVal N2 As Byte) As BigDecimal
- Return N1 Mod New BigDecimal(N2)
- End Operator
- Public Shared Operator Mod(ByVal N1 As Byte, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) Mod N2
- End Operator
- Public Shared Operator Mod(ByVal N1 As BigDecimal, ByVal N2 As SByte) As BigDecimal
- Return N1 Mod New BigDecimal(N2)
- End Operator
- Public Shared Operator Mod(ByVal N1 As SByte, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) Mod N2
- End Operator
- Public Shared Operator Mod(ByVal N1 As BigDecimal, ByVal N2 As Short) As BigDecimal
- Return N1 Mod New BigDecimal(N2)
- End Operator
- Public Shared Operator Mod(ByVal N1 As Short, ByVal N2 As BigDecimal) As BigDecimal
- Return New BigDecimal(N1) Mod N2
- End Operator
- #End Region
- #Region "="
- Public Shared Operator =(ByVal N1 As BigDecimal, ByVal N2 As BigDecimal) As Boolean
- If N1.MLen = N2.MLen AndAlso N1.Value = N2.Value Then Return True Else Return False
- End Operator
- Public Shared Operator =(ByVal N1 As BigDecimal, ByVal N2 As String) As Boolean
- Return N1 = New BigDecimal(N2)
- End Operator
- Public Shared Operator =(ByVal N1 As String, ByVal N2 As BigDecimal) As Boolean
- Return New BigDecimal(N1) = N2
- End Operator
- Public Shared Operator =(ByVal N1 As BigDecimal, ByVal N2 As BigInteger) As Boolean
- Return N1 = New BigDecimal(N2)
- End Operator
- Public Shared Operator =(ByVal N1 As BigInteger, ByVal N2 As BigDecimal) As Boolean
- Return New BigDecimal(N1) = N2
- End Operator
- Public Shared Operator =(ByVal N1 As BigDecimal, ByVal N2 As Decimal) As Boolean
- Return N1 = New BigDecimal(N2)
- End Operator
- Public Shared Operator =(ByVal N1 As Decimal, ByVal N2 As BigDecimal) As Boolean
- Return New BigDecimal(N1) = N2
- End Operator
- Public Shared Operator =(ByVal N1 As BigDecimal, ByVal N2 As Double) As Boolean
- Return N1 = New BigDecimal(N2)
- End Operator
- Public Shared Operator =(ByVal N1 As Double, ByVal N2 As BigDecimal) As Boolean
- Return New BigDecimal(N1) = N2
- End Operator
- Public Shared Operator =(ByVal N1 As BigDecimal, ByVal N2 As Integer) As Boolean
- Return N1 = New BigDecimal(N2)
- End Operator
- Public Shared Operator =(ByVal N1 As Integer, ByVal N2 As BigDecimal) As Boolean
- Return New BigDecimal(N1) = N2
- End Operator
- Public Shared Operator =(ByVal N1 As BigDecimal, ByVal N2 As Long) As Boolean
- Return N1 = New BigDecimal(N2)
- End Operator
- Public Shared Operator =(ByVal N1 As Long, ByVal N2 As BigDecimal) As Boolean
- Return New BigDecimal(N1) = N2
- End Operator
- Public Shared Operator =(ByVal N1 As BigDecimal, ByVal N2 As Single) As Boolean
- Return N1 = New BigDecimal(N2)
- End Operator
- Public Shared Operator =(ByVal N1 As Single, ByVal N2 As BigDecimal) As Boolean
- Return New BigDecimal(N1) = N2
- End Operator
- Public Shared Operator =(ByVal N1 As BigDecimal, ByVal N2 As UInteger) As Boolean
- Return N1 = New BigDecimal(N2)
- End Operator
- Public Shared Operator =(ByVal N1 As UInteger, ByVal N2 As BigDecimal) As Boolean
- Return New BigDecimal(N1) = N2
- End Operator
- Public Shared Operator =(ByVal N1 As BigDecimal, ByVal N2 As ULong) As Boolean
- Return N1 = New BigDecimal(N2)
- End Operator
- Public Shared Operator =(ByVal N1 As ULong, ByVal N2 As BigDecimal) As Boolean
- Return New BigDecimal(N1) = N2
- End Operator
- Public Shared Operator =(ByVal N1 As BigDecimal, ByVal N2 As UShort) As Boolean
- Return N1 = New BigDecimal(N2)
- End Operator
- Public Shared Operator =(ByVal N1 As UShort, ByVal N2 As BigDecimal) As Boolean
- Return New BigDecimal(N1) = N2
- End Operator
- Public Shared Operator =(ByVal N1 As BigDecimal, ByVal N2 As Byte) As Boolean
- Return N1 = New BigDecimal(N2)
- End Operator
- Public Shared Operator =(ByVal N1 As Byte, ByVal N2 As BigDecimal) As Boolean
- Return New BigDecimal(N1) = N2
- End Operator
- Public Shared Operator =(ByVal N1 As BigDecimal, ByVal N2 As SByte) As Boolean
- Return N1 = New BigDecimal(N2)
- End Operator
- Public Shared Operator =(ByVal N1 As SByte, ByVal N2 As BigDecimal) As Boolean
- Return New BigDecimal(N1) = N2
- End Operator
- Public Shared Operator =(ByVal N1 As BigDecimal, ByVal N2 As Short) As Boolean
- Return N1 = New BigDecimal(N2)
- End Operator
- Public Shared Operator =(ByVal N1 As Short, ByVal N2 As BigDecimal) As Boolean
- Return New BigDecimal(N1) = N2
- End Operator
- #End Region
- #Region "<>"
- Public Shared Operator <>(ByVal N1 As BigDecimal, ByVal N2 As BigDecimal) As Boolean
- If N1.MLen <> N2.MLen OrElse N1.Value <> N2.Value Then Return True Else Return False
- End Operator
- Public Shared Operator <>(ByVal N1 As BigDecimal, ByVal N2 As String) As Boolean
- Return N1 <> New BigDecimal(N2)
- End Operator
- Public Shared Operator <>(ByVal N1 As String, ByVal N2 As BigDecimal) As Boolean
- Return New BigDecimal(N1) <> N2
- End Operator
- Public Shared Operator <>(ByVal N1 As BigDecimal, ByVal N2 As BigInteger) As Boolean
- Return N1 <> New BigDecimal(N2)
- End Operator
- Public Shared Operator <>(ByVal N1 As BigInteger, ByVal N2 As BigDecimal) As Boolean
- Return New BigDecimal(N1) <> N2
- End Operator
- Public Shared Operator <>(ByVal N1 As BigDecimal, ByVal N2 As Decimal) As Boolean
- Return N1 <> New BigDecimal(N2)
- End Operator
- Public Shared Operator <>(ByVal N1 As Decimal, ByVal N2 As BigDecimal) As Boolean
- Return New BigDecimal(N1) <> N2
- End Operator
- Public Shared Operator <>(ByVal N1 As BigDecimal, ByVal N2 As Double) As Boolean
- Return N1 <> New BigDecimal(N2)
- End Operator
- Public Shared Operator <>(ByVal N1 As Double, ByVal N2 As BigDecimal) As Boolean
- Return New BigDecimal(N1) <> N2
- End Operator
- Public Shared Operator <>(ByVal N1 As BigDecimal, ByVal N2 As Integer) As Boolean
- Return N1 <> New BigDecimal(N2)
- End Operator
- Public Shared Operator <>(ByVal N1 As Integer, ByVal N2 As BigDecimal) As Boolean
- Return New BigDecimal(N1) <> N2
- End Operator
- Public Shared Operator <>(ByVal N1 As BigDecimal, ByVal N2 As Long) As Boolean
- Return N1 <> New BigDecimal(N2)
- End Operator
- Public Shared Operator <>(ByVal N1 As Long, ByVal N2 As BigDecimal) As Boolean
- Return New BigDecimal(N1) <> N2
- End Operator
- Public Shared Operator <>(ByVal N1 As BigDecimal, ByVal N2 As Single) As Boolean
- Return N1 <> New BigDecimal(N2)
- End Operator
- Public Shared Operator <>(ByVal N1 As Single, ByVal N2 As BigDecimal) As Boolean
- Return New BigDecimal(N1) <> N2
- End Operator
- Public Shared Operator <>(ByVal N1 As BigDecimal, ByVal N2 As UInteger) As Boolean
- Return N1 <> New BigDecimal(N2)
- End Operator
- Public Shared Operator <>(ByVal N1 As UInteger, ByVal N2 As BigDecimal) As Boolean
- Return New BigDecimal(N1) <> N2
- End Operator
- Public Shared Operator <>(ByVal N1 As BigDecimal, ByVal N2 As ULong) As Boolean
- Return N1 <> New BigDecimal(N2)
- End Operator
- Public Shared Operator <>(ByVal N1 As ULong, ByVal N2 As BigDecimal) As Boolean
- Return New BigDecimal(N1) <> N2
- End Operator
- Public Shared Operator <>(ByVal N1 As BigDecimal, ByVal N2 As UShort) As Boolean
- Return N1 <> New BigDecimal(N2)
- End Operator
- Public Shared Operator <>(ByVal N1 As UShort, ByVal N2 As BigDecimal) As Boolean
- Return New BigDecimal(N1) <> N2
- End Operator
- Public Shared Operator <>(ByVal N1 As BigDecimal, ByVal N2 As Byte) As Boolean
- Return N1 <> New BigDecimal(N2)
- End Operator
- Public Shared Operator <>(ByVal N1 As Byte, ByVal N2 As BigDecimal) As Boolean
- Return New BigDecimal(N1) <> N2
- End Operator
- Public Shared Operator <>(ByVal N1 As BigDecimal, ByVal N2 As SByte) As Boolean
- Return N1 <> New BigDecimal(N2)
- End Operator
- Public Shared Operator <>(ByVal N1 As SByte, ByVal N2 As BigDecimal) As Boolean
- Return New BigDecimal(N1) <> N2
- End Operator
- Public Shared Operator <>(ByVal N1 As BigDecimal, ByVal N2 As Short) As Boolean
- Return N1 <> New BigDecimal(N2)
- End Operator
- Public Shared Operator <>(ByVal N1 As Short, ByVal N2 As BigDecimal) As Boolean
- Return New BigDecimal(N1) <> N2
- End Operator
- #End Region
- #Region ">"
- Public Shared Operator >(ByVal N1 As BigDecimal, ByVal N2 As BigDecimal) As Boolean
- If Compare(N1, N2) = 1 Then Return True
- Return False
- End Operator
- Public Shared Operator >(ByVal N1 As BigDecimal, ByVal N2 As String) As Boolean
- If Compare(N1, N2) = 1 Then Return True
- Return False
- End Operator
- Public Shared Operator >(ByVal N1 As String, ByVal N2 As BigDecimal) As Boolean
- If Compare(N1, N2) = 1 Then Return True
- Return False
- End Operator
- Public Shared Operator >(ByVal N1 As BigDecimal, ByVal N2 As BigInteger) As Boolean
- If Compare(N1, N2) = 1 Then Return True
- Return False
- End Operator
- Public Shared Operator >(ByVal N1 As BigInteger, ByVal N2 As BigDecimal) As Boolean
- If Compare(N1, N2) = 1 Then Return True
- Return False
- End Operator
- Public Shared Operator >(ByVal N1 As BigDecimal, ByVal N2 As Decimal) As Boolean
- If Compare(N1, N2) = 1 Then Return True
- Return False
- End Operator
- Public Shared Operator >(ByVal N1 As Decimal, ByVal N2 As BigDecimal) As Boolean
- If Compare(N1, N2) = 1 Then Return True
- Return False
- End Operator
- Public Shared Operator >(ByVal N1 As BigDecimal, ByVal N2 As Double) As Boolean
- If Compare(N1, N2) = 1 Then Return True
- Return False
- End Operator
- Public Shared Operator >(ByVal N1 As Double, ByVal N2 As BigDecimal) As Boolean
- If Compare(N1, N2) = 1 Then Return True
- Return False
- End Operator
- Public Shared Operator >(ByVal N1 As BigDecimal, ByVal N2 As Integer) As Boolean
- If Compare(N1, N2) = 1 Then Return True
- Return False
- End Operator
- Public Shared Operator >(ByVal N1 As Integer, ByVal N2 As BigDecimal) As Boolean
- If Compare(N1, N2) = 1 Then Return True
- Return False
- End Operator
- Public Shared Operator >(ByVal N1 As BigDecimal, ByVal N2 As Long) As Boolean
- If Compare(N1, N2) = 1 Then Return True
- Return False
- End Operator
- Public Shared Operator >(ByVal N1 As Long, ByVal N2 As BigDecimal) As Boolean
- If Compare(N1, N2) = 1 Then Return True
- Return False
- End Operator
- Public Shared Operator >(ByVal N1 As BigDecimal, ByVal N2 As Single) As Boolean
- If Compare(N1, N2) = 1 Then Return True
- Return False
- End Operator
- Public Shared Operator >(ByVal N1 As Single, ByVal N2 As BigDecimal) As Boolean
- If Compare(N1, N2) = 1 Then Return True
- Return False
- End Operator
- Public Shared Operator >(ByVal N1 As BigDecimal, ByVal N2 As UInteger) As Boolean
- If Compare(N1, N2) = 1 Then Return True
- Return False
- End Operator
- Public Shared Operator >(ByVal N1 As UInteger, ByVal N2 As BigDecimal) As Boolean
- If Compare(N1, N2) = 1 Then Return True
- Return False
- End Operator
- Public Shared Operator >(ByVal N1 As BigDecimal, ByVal N2 As ULong) As Boolean
- If Compare(N1, N2) = 1 Then Return True
- Return False
- End Operator
- Public Shared Operator >(ByVal N1 As ULong, ByVal N2 As BigDecimal) As Boolean
- If Compare(N1, N2) = 1 Then Return True
- Return False
- End Operator
- Public Shared Operator >(ByVal N1 As BigDecimal, ByVal N2 As UShort) As Boolean
- If Compare(N1, N2) = 1 Then Return True
- Return False
- End Operator
- Public Shared Operator >(ByVal N1 As UShort, ByVal N2 As BigDecimal) As Boolean
- If Compare(N1, N2) = 1 Then Return True
- Return False
- End Operator
- Public Shared Operator >(ByVal N1 As BigDecimal, ByVal N2 As Byte) As Boolean
- If Compare(N1, N2) = 1 Then Return True
- Return False
- End Operator
- Public Shared Operator >(ByVal N1 As Byte, ByVal N2 As BigDecimal) As Boolean
- If Compare(N1, N2) = 1 Then Return True
- Return False
- End Operator
- Public Shared Operator >(ByVal N1 As BigDecimal, ByVal N2 As SByte) As Boolean
- If Compare(N1, N2) = 1 Then Return True
- Return False
- End Operator
- Public Shared Operator >(ByVal N1 As SByte, ByVal N2 As BigDecimal) As Boolean
- If Compare(N1, N2) = 1 Then Return True
- Return False
- End Operator
- Public Shared Operator >(ByVal N1 As BigDecimal, ByVal N2 As Short) As Boolean
- If Compare(N1, N2) = 1 Then Return True
- Return False
- End Operator
- Public Shared Operator >(ByVal N1 As Short, ByVal N2 As BigDecimal) As Boolean
- If Compare(N1, N2) = 1 Then Return True
- Return False
- End Operator
- #End Region
- #Region "<"
- Public Shared Operator <(ByVal N1 As BigDecimal, ByVal N2 As BigDecimal) As Boolean
- If Compare(N1, N2) = -1 Then Return True
- Return False
- End Operator
- Public Shared Operator <(ByVal N1 As BigDecimal, ByVal N2 As String) As Boolean
- If Compare(N1, N2) = -1 Then Return True
- Return False
- End Operator
- Public Shared Operator <(ByVal N1 As String, ByVal N2 As BigDecimal) As Boolean
- If Compare(N1, N2) = -1 Then Return True
- Return False
- End Operator
- Public Shared Operator <(ByVal N1 As BigDecimal, ByVal N2 As BigInteger) As Boolean
- If Compare(N1, N2) = -1 Then Return True
- Return False
- End Operator
- Public Shared Operator <(ByVal N1 As BigInteger, ByVal N2 As BigDecimal) As Boolean
- If Compare(N1, N2) = -1 Then Return True
- Return False
- End Operator
- Public Shared Operator <(ByVal N1 As BigDecimal, ByVal N2 As Decimal) As Boolean
- If Compare(N1, N2) = -1 Then Return True
- Return False
- End Operator
- Public Shared Operator <(ByVal N1 As Decimal, ByVal N2 As BigDecimal) As Boolean
- If Compare(N1, N2) = -1 Then Return True
- Return False
- End Operator
- Public Shared Operator <(ByVal N1 As BigDecimal, ByVal N2 As Double) As Boolean
- If Compare(N1, N2) = -1 Then Return True
- Return False
- End Operator
- Public Shared Operator <(ByVal N1 As Double, ByVal N2 As BigDecimal) As Boolean
- If Compare(N1, N2) = -1 Then Return True
- Return False
- End Operator
- Public Shared Operator <(ByVal N1 As BigDecimal, ByVal N2 As Integer) As Boolean
- If Compare(N1, N2) = -1 Then Return True
- Return False
- End Operator
- Public Shared Operator <(ByVal N1 As Integer, ByVal N2 As BigDecimal) As Boolean
- If Compare(N1, N2) = -1 Then Return True
- Return False
- End Operator
- Public Shared Operator <(ByVal N1 As BigDecimal, ByVal N2 As Long) As Boolean
- If Compare(N1, N2) = -1 Then Return True
- Return False
- End Operator
- Public Shared Operator <(ByVal N1 As Long, ByVal N2 As BigDecimal) As Boolean
- If Compare(N1, N2) = -1 Then Return True
- Return False
- End Operator
- Public Shared Operator <(ByVal N1 As BigDecimal, ByVal N2 As Single) As Boolean
- If Compare(N1, N2) = -1 Then Return True
- Return False
- End Operator
- Public Shared Operator <(ByVal N1 As Single, ByVal N2 As BigDecimal) As Boolean
- If Compare(N1, N2) = -1 Then Return True
- Return False
- End Operator
- Public Shared Operator <(ByVal N1 As BigDecimal, ByVal N2 As UInteger) As Boolean
- If Compare(N1, N2) = -1 Then Return True
- Return False
- End Operator
- Public Shared Operator <(ByVal N1 As UInteger, ByVal N2 As BigDecimal) As Boolean
- If Compare(N1, N2) = -1 Then Return True
- Return False
- End Operator
- Public Shared Operator <(ByVal N1 As BigDecimal, ByVal N2 As ULong) As Boolean
- If Compare(N1, N2) = -1 Then Return True
- Return False
- End Operator
- Public Shared Operator <(ByVal N1 As ULong, ByVal N2 As BigDecimal) As Boolean
- If Compare(N1, N2) = -1 Then Return True
- Return False
- End Operator
- Public Shared Operator <(ByVal N1 As BigDecimal, ByVal N2 As UShort) As Boolean
- If Compare(N1, N2) = -1 Then Return True
- Return False
- End Operator
- Public Shared Operator <(ByVal N1 As UShort, ByVal N2 As BigDecimal) As Boolean
- If Compare(N1, N2) = -1 Then Return True
- Return False
- End Operator
- Public Shared Operator <(ByVal N1 As BigDecimal, ByVal N2 As Byte) As Boolean
- If Compare(N1, N2) = -1 Then Return True
- Return False
- End Operator
- Public Shared Operator <(ByVal N1 As Byte, ByVal N2 As BigDecimal) As Boolean
- If Compare(N1, N2) = -1 Then Return True
- Return False
- End Operator
- Public Shared Operator <(ByVal N1 As BigDecimal, ByVal N2 As SByte) As Boolean
- If Compare(N1, N2) = -1 Then Return True
- Return False
- End Operator
- Public Shared Operator <(ByVal N1 As SByte, ByVal N2 As BigDecimal) As Boolean
- If Compare(N1, N2) = -1 Then Return True
- Return False
- End Operator
- Public Shared Operator <(ByVal N1 As BigDecimal, ByVal N2 As Short) As Boolean
- If Compare(N1, N2) = -1 Then Return True
- Return False
- End Operator
- Public Shared Operator <(ByVal N1 As Short, ByVal N2 As BigDecimal) As Boolean
- If Compare(N1, N2) = -1 Then Return True
- Return False
- End Operator
- #End Region
- #Region ">="
- Public Shared Operator >=(ByVal N1 As BigDecimal, ByVal N2 As BigDecimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = 1 Then Return True Else Return False
- End Operator
- Public Shared Operator >=(ByVal N1 As BigDecimal, ByVal N2 As String) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = 1 Then Return True Else Return False
- End Operator
- Public Shared Operator >=(ByVal N1 As String, ByVal N2 As BigDecimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = 1 Then Return True Else Return False
- End Operator
- Public Shared Operator >=(ByVal N1 As BigDecimal, ByVal N2 As BigInteger) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = 1 Then Return True Else Return False
- End Operator
- Public Shared Operator >=(ByVal N1 As BigInteger, ByVal N2 As BigDecimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = 1 Then Return True Else Return False
- End Operator
- Public Shared Operator >=(ByVal N1 As BigDecimal, ByVal N2 As Decimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = 1 Then Return True Else Return False
- End Operator
- Public Shared Operator >=(ByVal N1 As Decimal, ByVal N2 As BigDecimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = 1 Then Return True Else Return False
- End Operator
- Public Shared Operator >=(ByVal N1 As BigDecimal, ByVal N2 As Double) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = 1 Then Return True Else Return False
- End Operator
- Public Shared Operator >=(ByVal N1 As Double, ByVal N2 As BigDecimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = 1 Then Return True Else Return False
- End Operator
- Public Shared Operator >=(ByVal N1 As BigDecimal, ByVal N2 As Integer) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = 1 Then Return True Else Return False
- End Operator
- Public Shared Operator >=(ByVal N1 As Integer, ByVal N2 As BigDecimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = 1 Then Return True Else Return False
- End Operator
- Public Shared Operator >=(ByVal N1 As BigDecimal, ByVal N2 As Long) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = 1 Then Return True Else Return False
- End Operator
- Public Shared Operator >=(ByVal N1 As Long, ByVal N2 As BigDecimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = 1 Then Return True Else Return False
- End Operator
- Public Shared Operator >=(ByVal N1 As BigDecimal, ByVal N2 As Single) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = 1 Then Return True Else Return False
- End Operator
- Public Shared Operator >=(ByVal N1 As Single, ByVal N2 As BigDecimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = 1 Then Return True Else Return False
- End Operator
- Public Shared Operator >=(ByVal N1 As BigDecimal, ByVal N2 As UInteger) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = 1 Then Return True Else Return False
- End Operator
- Public Shared Operator >=(ByVal N1 As UInteger, ByVal N2 As BigDecimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = 1 Then Return True Else Return False
- End Operator
- Public Shared Operator >=(ByVal N1 As BigDecimal, ByVal N2 As ULong) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = 1 Then Return True Else Return False
- End Operator
- Public Shared Operator >=(ByVal N1 As ULong, ByVal N2 As BigDecimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = 1 Then Return True Else Return False
- End Operator
- Public Shared Operator >=(ByVal N1 As BigDecimal, ByVal N2 As UShort) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = 1 Then Return True Else Return False
- End Operator
- Public Shared Operator >=(ByVal N1 As UShort, ByVal N2 As BigDecimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = 1 Then Return True Else Return False
- End Operator
- Public Shared Operator >=(ByVal N1 As BigDecimal, ByVal N2 As Byte) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = 1 Then Return True Else Return False
- End Operator
- Public Shared Operator >=(ByVal N1 As Byte, ByVal N2 As BigDecimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = 1 Then Return True Else Return False
- End Operator
- Public Shared Operator >=(ByVal N1 As BigDecimal, ByVal N2 As SByte) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = 1 Then Return True Else Return False
- End Operator
- Public Shared Operator >=(ByVal N1 As SByte, ByVal N2 As BigDecimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = 1 Then Return True Else Return False
- End Operator
- Public Shared Operator >=(ByVal N1 As BigDecimal, ByVal N2 As Short) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = 1 Then Return True Else Return False
- End Operator
- Public Shared Operator >=(ByVal N1 As Short, ByVal N2 As BigDecimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = 1 Then Return True Else Return False
- End Operator
- #End Region
- #Region "<="
- Public Shared Operator <=(ByVal N1 As BigDecimal, ByVal N2 As BigDecimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = -1 Then Return True Else Return False
- End Operator
- Public Shared Operator <=(ByVal N1 As BigDecimal, ByVal N2 As String) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = -1 Then Return True Else Return False
- End Operator
- Public Shared Operator <=(ByVal N1 As String, ByVal N2 As BigDecimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = -1 Then Return True Else Return False
- End Operator
- Public Shared Operator <=(ByVal N1 As BigDecimal, ByVal N2 As BigInteger) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = -1 Then Return True Else Return False
- End Operator
- Public Shared Operator <=(ByVal N1 As BigInteger, ByVal N2 As BigDecimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = -1 Then Return True Else Return False
- End Operator
- Public Shared Operator <=(ByVal N1 As BigDecimal, ByVal N2 As Decimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = -1 Then Return True Else Return False
- End Operator
- Public Shared Operator <=(ByVal N1 As Decimal, ByVal N2 As BigDecimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = -1 Then Return True Else Return False
- End Operator
- Public Shared Operator <=(ByVal N1 As BigDecimal, ByVal N2 As Double) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = -1 Then Return True Else Return False
- End Operator
- Public Shared Operator <=(ByVal N1 As Double, ByVal N2 As BigDecimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = -1 Then Return True Else Return False
- End Operator
- Public Shared Operator <=(ByVal N1 As BigDecimal, ByVal N2 As Integer) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = -1 Then Return True Else Return False
- End Operator
- Public Shared Operator <=(ByVal N1 As Integer, ByVal N2 As BigDecimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = -1 Then Return True Else Return False
- End Operator
- Public Shared Operator <=(ByVal N1 As BigDecimal, ByVal N2 As Long) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = -1 Then Return True Else Return False
- End Operator
- Public Shared Operator <=(ByVal N1 As Long, ByVal N2 As BigDecimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = -1 Then Return True Else Return False
- End Operator
- Public Shared Operator <=(ByVal N1 As BigDecimal, ByVal N2 As Single) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = -1 Then Return True Else Return False
- End Operator
- Public Shared Operator <=(ByVal N1 As Single, ByVal N2 As BigDecimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = -1 Then Return True Else Return False
- End Operator
- Public Shared Operator <=(ByVal N1 As BigDecimal, ByVal N2 As UInteger) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = -1 Then Return True Else Return False
- End Operator
- Public Shared Operator <=(ByVal N1 As UInteger, ByVal N2 As BigDecimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = -1 Then Return True Else Return False
- End Operator
- Public Shared Operator <=(ByVal N1 As BigDecimal, ByVal N2 As ULong) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = -1 Then Return True Else Return False
- End Operator
- Public Shared Operator <=(ByVal N1 As ULong, ByVal N2 As BigDecimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = -1 Then Return True Else Return False
- End Operator
- Public Shared Operator <=(ByVal N1 As BigDecimal, ByVal N2 As UShort) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = -1 Then Return True Else Return False
- End Operator
- Public Shared Operator <=(ByVal N1 As UShort, ByVal N2 As BigDecimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = -1 Then Return True Else Return False
- End Operator
- Public Shared Operator <=(ByVal N1 As BigDecimal, ByVal N2 As Byte) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = -1 Then Return True Else Return False
- End Operator
- Public Shared Operator <=(ByVal N1 As Byte, ByVal N2 As BigDecimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = -1 Then Return True Else Return False
- End Operator
- Public Shared Operator <=(ByVal N1 As BigDecimal, ByVal N2 As SByte) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = -1 Then Return True Else Return False
- End Operator
- Public Shared Operator <=(ByVal N1 As SByte, ByVal N2 As BigDecimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = -1 Then Return True Else Return False
- End Operator
- Public Shared Operator <=(ByVal N1 As BigDecimal, ByVal N2 As Short) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = -1 Then Return True Else Return False
- End Operator
- Public Shared Operator <=(ByVal N1 As Short, ByVal N2 As BigDecimal) As Boolean
- Dim R As Integer = Compare(N1, N2)
- If R = 0 OrElse R = -1 Then Return True Else Return False
- End Operator
- #End Region
- #Region "General Functions"
- Private Shared Function FormatString(ByVal N As String) As String
- If N = "" Then Return "0"
- Dim RetStr As String
- If N.StartsWith("-") Then RetStr = "-" Else RetStr = ""
- Dim Point As Boolean = True
- For Each c As Char In N
- Select Case c
- Case "0"c To "9"c
- RetStr &= c
- Case "."c
- If Point Then
- RetStr &= "."
- Point = False
- End If
- End Select
- Next
- If RetStr = "" Then Return "0"
- Return RetStr
- End Function
- Public Function ToByteArray() As Byte()
- Dim RBytes As New List(Of Byte)
- RBytes.AddRange(BitConverter.GetBytes(MLen))
- RBytes.AddRange(Value.ToByteArray)
- Return RBytes.ToArray
- End Function
- Public Shared Function Compare(ByVal N1 As BigDecimal, ByVal N2 As BigDecimal) As Integer
- If N1.Sign > N2.Sign Then Return 1
- If N1.Sign < N2.Sign Then Return -1
- If N1.MLen = N2.MLen Then
- If N1.Value = N2.Value Then Return 0
- If N1.Value < N2.Value Then Return -1
- If N1.Value > N2.Value Then Return 1
- End If
- If N1.MLen > N2.MLen _
- Then N2.Value *= BigInteger.Pow(10, N1.MLen) _
- Else N1.Value *= BigInteger.Pow(10, N2.MLen)
- If N1.Value < N2.Value Then Return -1 Else Return 1
- End Function
- Public Shared Function Compare(ByVal N1 As BigDecimal, ByVal N2 As String) As Integer
- Return Compare(N1, New BigDecimal(N2))
- End Function
- Public Shared Function Compare(ByVal N1 As String, ByVal N2 As BigDecimal) As Integer
- Return Compare(New BigDecimal(N1), N2)
- End Function
- Public Shared Function Compare(ByVal N1 As BigDecimal, ByVal N2 As BigInteger) As Integer
- Return Compare(N1, New BigDecimal(N2))
- End Function
- Public Shared Function Compare(ByVal N1 As BigInteger, ByVal N2 As BigDecimal) As Integer
- Return Compare(New BigDecimal(N1), N2)
- End Function
- Public Shared Function Compare(ByVal N1 As BigDecimal, ByVal N2 As Decimal) As Integer
- Return Compare(N1, New BigDecimal(N2))
- End Function
- Public Shared Function Compare(ByVal N1 As Decimal, ByVal N2 As BigDecimal) As Integer
- Return Compare(New BigDecimal(N1), N2)
- End Function
- Public Shared Function Compare(ByVal N1 As BigDecimal, ByVal N2 As Double) As Integer
- Return Compare(N1, New BigDecimal(N2))
- End Function
- Public Shared Function Compare(ByVal N1 As Double, ByVal N2 As BigDecimal) As Integer
- Return Compare(New BigDecimal(N1), N2)
- End Function
- Public Shared Function Compare(ByVal N1 As BigDecimal, ByVal N2 As Integer) As Integer
- Return Compare(N1, New BigDecimal(N2))
- End Function
- Public Shared Function Compare(ByVal N1 As Integer, ByVal N2 As BigDecimal) As Integer
- Return Compare(New BigDecimal(N1), N2)
- End Function
- Public Shared Function Compare(ByVal N1 As BigDecimal, ByVal N2 As Long) As Integer
- Return Compare(N1, New BigDecimal(N2))
- End Function
- Public Shared Function Compare(ByVal N1 As Long, ByVal N2 As BigDecimal) As Integer
- Return Compare(New BigDecimal(N1), N2)
- End Function
- Public Shared Function Compare(ByVal N1 As BigDecimal, ByVal N2 As Single) As Integer
- Return Compare(N1, New BigDecimal(N2))
- End Function
- Public Shared Function Compare(ByVal N1 As Single, ByVal N2 As BigDecimal) As Integer
- Return Compare(New BigDecimal(N1), N2)
- End Function
- Public Shared Function Compare(ByVal N1 As BigDecimal, ByVal N2 As UInteger) As Integer
- Return Compare(N1, New BigDecimal(N2))
- End Function
- Public Shared Function Compare(ByVal N1 As UInteger, ByVal N2 As BigDecimal) As Integer
- Return Compare(New BigDecimal(N1), N2)
- End Function
- Public Shared Function Compare(ByVal N1 As BigDecimal, ByVal N2 As ULong) As Integer
- Return Compare(N1, New BigDecimal(N2))
- End Function
- Public Shared Function Compare(ByVal N1 As ULong, ByVal N2 As BigDecimal) As Integer
- Return Compare(New BigDecimal(N1), N2)
- End Function
- Public Shared Function Compare(ByVal N1 As BigDecimal, ByVal N2 As Short) As Integer
- Return Compare(N1, New BigDecimal(N2))
- End Function
- Public Shared Function Compare(ByVal N1 As Short, ByVal N2 As BigDecimal) As Integer
- Return Compare(New BigDecimal(N1), N2)
- End Function
- Public Shared Function Compare(ByVal N1 As BigDecimal, ByVal N2 As UShort) As Integer
- Return Compare(N1, New BigDecimal(N2))
- End Function
- Public Shared Function Compare(ByVal N1 As UShort, ByVal N2 As BigDecimal) As Integer
- Return Compare(New BigDecimal(N1), N2)
- End Function
- Public Shared Function Compare(ByVal N1 As BigDecimal, ByVal N2 As Byte) As Integer
- Return Compare(N1, New BigDecimal(N2))
- End Function
- Public Shared Function Compare(ByVal N1 As Byte, ByVal N2 As BigDecimal) As Integer
- Return Compare(New BigDecimal(N1), N2)
- End Function
- Public Shared Function Compare(ByVal N1 As BigDecimal, ByVal N2 As SByte) As Integer
- Return Compare(N1, New BigDecimal(N2))
- End Function
- Public Shared Function Compare(ByVal N1 As SByte, ByVal N2 As BigDecimal) As Integer
- Return Compare(New BigDecimal(N1), N2)
- End Function
- Public Function CompareTo(ByVal N2 As BigDecimal) As Integer
- Return Compare(Me, N2)
- End Function
- Public Function CompareTo(ByVal N2 As String) As Integer
- Return Compare(Me, N2)
- End Function
- Public Function CompareTo(ByVal N2 As BigInteger) As Integer
- Return Compare(Me, N2)
- End Function
- Public Function CompareTo(ByVal N2 As Decimal) As Integer
- Return Compare(Me, N2)
- End Function
- Public Function CompareTo(ByVal N2 As Double) As Integer
- Return Compare(Me, N2)
- End Function
- Public Function CompareTo(ByVal N2 As Integer) As Integer
- Return Compare(Me, N2)
- End Function
- Public Function CompareTo(ByVal N2 As Long) As Integer
- Return Compare(Me, N2)
- End Function
- Public Function CompareTo(ByVal N2 As Single) As Integer
- Return Compare(Me, N2)
- End Function
- Public Function CompareTo(ByVal N2 As UInteger) As Integer
- Return Compare(Me, N2)
- End Function
- Public Function CompareTo(ByVal N2 As ULong) As Integer
- Return Compare(Me, N2)
- End Function
- Public Function CompareTo(ByVal N2 As Short) As Integer
- Return Compare(Me, N2)
- End Function
- Public Function CompareTo(ByVal N2 As UShort) As Integer
- Return Compare(Me, N2)
- End Function
- Public Function CompareTo(ByVal N2 As Byte) As Integer
- Return Compare(Me, N2)
- End Function
- Public Function CompareTo(ByVal N2 As SByte) As Integer
- Return Compare(Me, N2)
- End Function
- Public Shared Function Abs(ByVal N As BigDecimal) As BigDecimal
- If N.Sign = -1 Then Return N * N.Sign
- Return N
- End Function
- Public Shared Function Floor(ByVal N As BigDecimal) As BigDecimal
- If N.Sign = -1 _
- Then Return New BigDecimal(N.Value / BigInteger.Pow(10, N.MLen) - 1) _
- Else Return New BigDecimal(N.Value / BigInteger.Pow(10, N.MLen))
- End Function
- Public Shared Function Ceiling(ByVal N As BigDecimal) As BigDecimal
- If N.Sign = -1 _
- Then Return New BigDecimal(N.Value / BigInteger.Pow(10, N.MLen)) _
- Else Return New BigDecimal(N.Value / BigInteger.Pow(10, N.MLen) + 1)
- End Function
- Public Shared Function Truncate(ByVal N As BigDecimal, Optional ByVal P As Integer = 0) As BigDecimal
- If N.MLen = 0 Then Return N
- If P < 0 Then P = 0
- If P >= N.MLen Then P = N.MLen
- Truncate = New BigDecimal(N.Value / BigInteger.Pow(10, N.MLen - P))
- Truncate.MLen += P
- End Function
- Public Shared Function Random(ByVal MaxSignificantDigits As UInteger) As BigDecimal
- Dim N As String = ""
- Dim Digits As Integer = _Rnd.Next(0, MaxSignificantDigits)
- For i = 0 To Digits
- N &= _Rnd.Next(0, 10)
- Next
- N = N.Insert(_Rnd.Next(0, N.Length), ".")
- If _Rnd.Next(0, 2) = 1 Then Return New BigDecimal("-" & N) Else Return New BigDecimal(N)
- End Function
- Public Overrides Function ToString() As String
- If Value.Sign = 0 Then Return "0"
- Dim S As String = Value.ToString
- If Value.Sign = -1 Then S = S.Remove(0, 1)
- If S.Length > MLen Then _
- If S.Length - MLen = 0 _
- Then S = "#" & S.Insert(S.Length - MLen, ".") _
- Else S = S.Insert(S.Length - MLen, ".") _
- Else S = "#." & S.PadLeft(MLen, "0"c)
- S = S.Trim("0"c)
- If S.EndsWith("."c) Then S &= "0"
- If Value.Sign = -1 Then Return ("-" & S).Replace("#", "0") Else Return S.Replace("#", "0")
- End Function
- #End Region
- #Region "Misc"
- Public Shared Function Sqrt(ByVal N As BigDecimal, Optional ByVal P As Integer = -1) As BigDecimal
- If P < 0 Then P = _P
- Dim ourGuess As BigDecimal = Div(N, Two, P)
- While True
- Dim average As BigDecimal = Div((ourGuess + Div(N, ourGuess, P)), Two, P)
- If average = ourGuess Then Return average Else ourGuess = average
- End While
- Return Zero
- End Function
- Public Shared Function Phi(Optional ByVal P As Integer = -1) As BigDecimal
- If P < 0 Then P = _P
- Return (One + Sqrt(Five, P)) * ZeroPointFive
- End Function
- Public Shared Function Pi(Optional ByVal P As Integer = -1) As BigDecimal
- If P < 0 Then P = _P
- Dim answer As BigDecimal = Zero
- Dim term5 As BigDecimal = ThreePointTwo
- Dim term239 As BigDecimal = Div(Four, TwoHundredThirtyNine, P)
- Dim term5m, term239m As BigDecimal
- Dim n5 As Integer = 0
- Dim n239 As Integer = 0
- While True
- term5m = Div(term5, New BigDecimal(n5 * 2 + 1), P)
- If n5 Mod 2 = 0 Then answer += term5m Else answer -= term5m
- term5 = Div(term5, TwentyFive, P)
- n5 += 1
- If term5m.IsZero Then Exit While
- End While
- While True
- term239m = Div(term239, New BigDecimal(n239 * 2 + 1), P)
- If n239 Mod 2 = 0 Then answer -= term239m Else answer += term239m
- term239 = Div(term239, FiftySevenThousandOneHundredTwentyOne, P)
- n239 += 1
- If term239m.IsZero Then Exit While
- End While
- Return answer
- End Function
- Public Shared Function Tau(Optional ByVal P As Integer = -1) As BigDecimal
- If P < 0 Then P = _P + 1 Else P += 1
- Dim answer As BigDecimal = Zero
- Dim term5 As BigDecimal = ThreePointTwo
- Dim term239 As BigDecimal = Div(Four, TwoHundredThirtyNine, P)
- Dim term5m, term239m As BigDecimal
- Dim n5 As Integer = 0
- Dim n239 As Integer = 0
- While True
- term5m = Div(term5, New BigDecimal(n5 * 2 + 1), P)
- If n5 Mod 2 = 0 Then answer += term5m Else answer -= term5m
- term5 = Div(term5, TwentyFive, P)
- n5 += 1
- If term5m.IsZero Then Exit While
- End While
- While True
- term239m = Div(term239, New BigDecimal(n239 * 2 + 1), P)
- If n239 Mod 2 = 0 Then answer -= term239m Else answer += term239m
- term239 = Div(term239, FiftySevenThousandOneHundredTwentyOne, P)
- n239 += 1
- If term239m.IsZero Then Exit While
- End While
- Return Div(answer * Two, 1, P - 1)
- End Function
- Public Shared Function PythagorasConst(Optional ByVal P As Integer = -1) As BigDecimal
- If P < 0 Then P = _P
- Return Sqrt(Two, P)
- End Function
- #End Region
- End Structure
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement