Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1552 | Anzahl registrierter User: 1849 | Besucher online: 400
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Anzahl der Nachkommastellen einer Dezimalzahl bestimmen


Autor: Eugen Hübner
Sprache: VB.NET
Bewertung:
noch nicht bewertet
Anzahl der Aufrufe: 910
  
Kick it on dotnet-kicks.de  

Beschreibung:

Dieses Snippet liefert die Anzahl der Nachkommastellen einer Double-Dezimalzahl. Damit keinesfalls durch mathematische Berechnungen Verfälschungen entstehen können, werden zur Auswertung String-Methoden verwendet. Das gültige Dezimal-Trennzeichen, welches von .NET bei der Umwandlung von Double nach String verwendet wird, wird den Culture-Einstellungen entnommen.

Abgelegt unter: Dezimalzahl, Nachkommastellen, Nachkommazahl, Dezimaltrennzeichen, Trennzeichen, Anzahl, Dezimal.



Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    Public Function NachkommastellenAnzahl(ByVal Zahl As Double) As Integer
        Dim zahltext As String
        Dim anzahl As Integer
        Dim dezimaltrennzeichen As String
        '>>> gültiges Dezimaltrennzeichen holen, welches .NET gerade auch bei der Umwandlung von Double nach String in den String einsetzt  (kann auch ein String aus mehreren Zeichen sein)
        dezimaltrennzeichen = My.Application.Culture.NumberFormat.NumberDecimalSeparator.ToString
        '>>> Dezimalzahl in String umwandeln
        zahltext = Convert.ToString(Zahl)
        '>>> Zahlenstring umdrehen, so dass die Nachkommastellen vorne stehen
        zahltext = StrReverse(zahltext)
        '>>> Dezimaltrennzeichen im Zahlenstring suchen, anzahl wird entsprechend durch die Fundstelle im String bestimmt, da die Fundstelle nullbasiert ist
        anzahl = zahltext.IndexOf(dezimaltrennzeichen)
        '>>> Wird das Dezimaltrennzeichen nicht gefunden (Ergebnis: -1), so ist die Anzahl = 0
        If anzahl < 0 Then anzahl = 0
        '>>> RÜCKGABE
        Return anzahl
    End Function
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

Scavanger schrieb am:  02.12.2011 12:26:58

"Anzahl der Nachkommastellen" auch genannt Exponent ist bei der internen Zahlendarstellung von Gleitkommazahlen schon vorhanden. (Details bei Wikipedia: http://de.wikipedia.org/wiki/Gleitkommazahl).
Man muss sie nur sichtbar machen und muss dann keinen Zirkus mit Strings veranstalten wenn man mit Zahlen arbeitet.

Hier mal ein Beispiel, in zwar in C# und mit Decimal (da gibts es schon eine eingebaute Funktion um an Mantisse, Exponent zu kommen) aber das Prinzip ist dasselbe:


static int GetDecimalPlaceCount(decimal value)
{
// Alle Bits außer Exponent auf 0 setzen und nach rechts schieben um den Wert zu erhalten.
return (Decimal.GetBits(value)[3] & 0x0ff0000) >> 0x10;
}

Klarer wirds noch bei der Lektüre der Decimal.GetBits() Doku: http://msdn.microsoft.com/de-de/library/system.decimal.getbits(v=VS.80).aspx

Wen es noch interessiert wie man an Mantisse, Exponent bei Double kommt, sei dieser MSDN Blog empfohlen:
http://blogs.msdn.com/b/ericlippert/archive/2011/02/17/looking-inside-a-double.aspx



schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.