RosettaCodeData/Task/Infinity/Visual-Basic/infinity.vb

28 lines
890 B
VB.net

Option Explicit
Private Declare Sub GetMem8 Lib "msvbvm60.dll" _
(ByVal SrcAddr As Long, ByVal TarAddr As Long)
Sub Main()
Dim PlusInfinity As Double
Dim MinusInfinity As Double
Dim IndefiniteNumber As Double
On Error Resume Next
PlusInfinity = 1 / 0
MinusInfinity = -1 / 0
IndefiniteNumber = 0 / 0
Debug.Print "PlusInfinity = " & CStr(PlusInfinity) _
& " (" & DoubleAsHex(PlusInfinity) & ")"
Debug.Print "MinusInfinity = " & CStr(MinusInfinity) _
& " (" & DoubleAsHex(MinusInfinity) & ")"
Debug.Print "IndefiniteNumber = " & CStr(IndefiniteNumber) _
& " (" & DoubleAsHex(IndefiniteNumber) & ")"
End Sub
Function DoubleAsHex(ByVal d As Double) As String
Dim l(0 To 1) As Long
GetMem8 VarPtr(d), VarPtr(l(0))
DoubleAsHex = Right$(String$(8, "0") & Hex$(l(1)), 8) _
& Right$(String$(8, "0") & Hex$(l(0)), 8)
End Function