Einzelnen Beitrag anzeigen

Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 

Re: Nachkommastellen zählen

  Alt 24. Sep 2005, 21:30
Zitat von JayK:
Ich hab aber rausgefunden: Decimal kann auch nur 28 Stellen (nicht Nachkommastellen) darstellen. Heißt aber trotzdem Festkommatyp
? Irgendwo muss schon eine Grenze sein (oder programmiert Hagen schon unter .NET ?) .

Zitat:
Und weil ich vergessen habe, eine Sprache für den Thread festzulegen, möchte ich gerne noch wissen, wie man das mit Extended unter Delphi macht
Die Funktion von Khabarakh hat ja ordentlich funktioniert, wie würde die in Delphi aussehen?
const Double Epsilon = 1e-6d; Bei dem d hapert's. Das e nimmt er sogar schon an. (Ob richtig oder falsch weiß ich nich)
Literale in Delphi haben keine "Kennung":
const Epsilon = 1E-6; Fäst hätte ich vergessen, dass ich vor einer Woche ein Programm zum Auseinandernehmen von Decimal geschrieben habe:
Code:
                public static unsafe byte[] GetBytes(void* p, uint Length)
      {
         byte[] Bytes = new byte[Length];
         byte* bytep = (byte*) p;
         for (int i = 0; i < Length; i++) {
            Bytes[i] = *bytep;
            bytep++;
         }
         return Bytes;
      }
Für alle ohne Framework ein paar Ergebnisse:
Code:
1 =

Byte 0: 00000000 0
Byte 1: 00000000 0
Byte 2: 00000000 0
Byte 3: 00000000 0
Byte 4: 00000000 0
Byte 5: 00000000 0
Byte 6: 00000000 0
Byte 7: 00000000 0
Byte 8: 10000000 1
Byte 9: 00000000 0
Byte 10: 00000000 0
Byte 11: 00000000 0
Byte 12: 00000000 0
Byte 13: 00000000 0
Byte 14: 00000000 0
Byte 15: 00000000 0
Code:
1,00 =

Byte 0: 00000000 0
Byte 1: 00000000 0
Byte 2: 01000000 2
Byte 3: 00000000 0
Byte 4: 00000000 0
Byte 5: 00000000 0
Byte 6: 00000000 0
Byte 7: 00000000 0
Byte 8: 00100110 100
Byte 9: 00000000 0
Byte 10: 00000000 0
Byte 11: 00000000 0
Byte 12: 00000000 0
Byte 13: 00000000 0
Byte 14: 00000000 0
Byte 15: 00000000 0
Code:
-1,000000000000000000000 =

Byte 0: 00000000 0
Byte 1: 00000000 0
Byte 2: 10101000 21
Byte 3: 00000001 128
Byte 4: 01101100 54
Byte 5: 00000000 0
Byte 6: 00000000 0
Byte 7: 00000000 0
Byte 8: 00000000 0
Byte 9: 00000000 0
Byte 10: 00000101 160
Byte 11: 01111011 222
Byte 12: 10100011 197
Byte 13: 10110101 173
Byte 14: 10010011 201
Byte 15: 10101100 53
Sollte man die Bits noch umdrehen? So sollte es aber stimmen:
Code:
Byte 0-1: Unbenutzt
Byte   2: Exponent in Byte, 0 <= e <= 28
Byte   3: Vorzeichen, 128 = Negativ
Byte 4-7: 16 Bit Ganzzahl, 2. Teil der Mantisse
Byte 8-15: 32 Bit Ganzzahl, 1. Teil der Mantisse
Angehängte Dateien
Dateityp: zip decimal_501.zip (8,4 KB, 4x aufgerufen)
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat