'
' Number.AsIEEEHex
'
' 30 Jan 2002
'
' Used for reporting values of coordinates when testing.
'===================================================================='
x = SELF ' Original
number
'
' Remove the sign bit.
'
if (x<0) then
x = x.Abs
sX = "-0."
else
sX = "0."
end
'
' Obtain the exponent.
'
if (x=0.0) then
nExponent = 0
x = 0.0
else
nExponent = x.Log(2).Ceiling
if (nExponent>=-1024) then
while (2^(nExponent-1)>x and (nExponent>-1076))
nExponent = nExponent-1
end
while (2^nExponent<=x and (nExponent<1024))
nExponent = nExponent+1
end
'
' Normalize.
'
x = (2^(0-nExponent)*x)*(2^52)
else
nExponent = -1024
x = (2^1023*x)*(2^53)
end
end
'
' Convert to hex string.
'
y = x mod (2^32)
x = 2^(-32)*(x-y)
sYHex = y.AsHexString.Substitute("0x","")
sYHex = ("00000000"+sYHex).Right(8)
sXHex = x.AsHexString.Substitute("0x","")
sXHex = ("00000"+sXHex).Right(5)
sXHex = sXHex+sYHex
'
' Break the mantissa into groups.
'
sXHex = sXHex.Split({4,8,12}," ")
' (Inserts spaces every fourth character)
sX = sX+sXHex
'
' Convert the exponent to hex string.
'
if (nExponent<0) then
sE = "-"
nExponent = nExponent.Abs
else
sE = "+"
end
sEHex = nExponent.AsHexString.Substitute("0x","")
sEHex = sEHex.BasicTrim("0","")
' (Removes initial "0"s)
if (sEHex.IsNull) then
sEHex = "0"
end
sE = sE+sEHex
return sX++"H"+sE
' end of script