2010-10-18 22 views
3

Quelqu'un peut-il offrir des conseils sur la façon d'obtenir la mantisse et l'exposant d'un double dans VB.net? Je sais que je peux faire une analyse syntaxique et une conversion en int, mais je me demandais si quelqu'un avait une formule mathématique équivalente qui me permettrait de faire ça?vb.net calcul de mantisse et d'exposant à partir du double

Un grand merci

Répondre

2

Est-ce que vous voulez obtenir la mantisse et exposant « natif » dans la valeur IEEE-754? C'est en fait assez facile: utilisez BitConverter.DoubleToInt64Bits pour obtenir la valeur sous la forme d'un nombre entier (ce qui est plus facile d'effectuer des opérations sur bits), puis voir mon article on .NET binary floating point types pour savoir quels bits sont où.

J'ai quelques C# code qui extrait les différentes parties afin de le convertir en une représentation décimale précise - vous pourriez convertir les bits pertinents de cela en VB raisonnablement facilement.

+0

Je veux juste obtenir l'exposant et manitssa comme deux valeurs entières séparées. – WizardsSleeve

+0

user479122: Mais dans quel format? Voulez-vous dire en tant qu'exposant * décimal * et mantisse? Ou l'exposant natif de base-2 et la mantisse? –

+0

Désolé, l'exposant décimal et la mantisse. – WizardsSleeve

0

Vous devriez essayer ceci:

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