任何人都可以就如何从 VB.net 中的双精度数中获取尾数和指数提供任何建议吗?我知道我可以进行字符串解析和一些到整数的转换,但我想知道是否有人有一个数学等效公式可以让我这样做?
非常感谢
您想获得 IEEE-754 值内的“本机”尾数和指数吗?这实际上相当简单:使用BitConverter.DoubleToInt64Bits
以整数形式获取值(更容易对其执行位操作),然后查看我关于 .NET 二进制浮点类型的文章,其中位在哪里。
我有一些C# 代码提取各个部分,以便将其转换为精确的十进制表示 - 您可以相当容易地将其相关位转换为 VB。
你应该试试这个:
Public Function DeclString(ByVal dDegrees As Double) As String
Dim Flag As String
Dim ddecimal As Double
Dim iDegrees As Integer
If dDegrees < 0 Then Flag = "S" Else Flag = "N"
iDegrees = Int(Abs(dDegrees))
ddecimal = (Abs(dDegrees) - iDegrees) * 60 ' + 0.5
If ddecimal > 59.5 Then iDegrees = iDegrees + 1: ddecimal = 0
DeclString = Format$(iDegrees, "00") + Flag + Format$(ddecimal, "00")
End Function