2010-10-18 6 views
3

Может ли кто-нибудь предложить какие-либо советы о том, как получить мантиссы и экспонента из двойника в VB.net? Я знаю, что могу выполнить синтаксический анализ строки и некоторое преобразование в ints, но я подумал, есть ли у кого-нибудь математическая эквивалентная формула, которая позволила бы мне это сделать?vb.net mantissa и подсчет экспонентов из double

Большое спасибо

ответ

2

вы хотите получить «родной» мантиссу и экспоненту в пределах значения IEEE-754 ли? На самом деле это довольно просто: используйте BitConverter.DoubleToInt64Bits, чтобы получить значение как целое число (которое проще выполнять битовые операции), а затем увидеть мой article on .NET binary floating point types, для которого бит есть.

У меня есть C# code, который извлекает различные части, чтобы преобразовать их в точное десятичное представление - вы можете легко преобразовать соответствующие биты этого в VB.

+0

Я просто хочу, чтобы получить показатель и manitssa как два отдельных целочисленных значений. – WizardsSleeve

+0

user479122: Но в каком формате? Вы имеете в виду как «десятичный» показатель и мантисса? Или родной базой-2 экспоненты и мантиссы? –

+0

Извините, десятичный показатель и мантисса. – WizardsSleeve

0

Вы должны попробовать это:

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