Einzelnen Beitrag anzeigen

Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#1

kleinste Zahl in der Signifikanz

  Alt 15. Mär 2012, 15:19
Gegeben ist X: Double.

Gesucht sind die kleinsten L, R: Double, für die gilt: X - L < X < X + R.

Umgangssprachlich: Gegeben ist eine Zahl X vom Typ Double. Gesucht sind zwei Zahlen L und R vom Typ Double. Dabei soll L so bestimmt werden, dass X := X - L zur nächst kleineren Zahl führt, die mit Double darstellbar ist; und soll R so bestimmt werden, dass X := X + R zur nächst größeren Zahl führt, die mit Double darstellbar ist.

Der Typ Double ist so aufgebaut:
Zitat:
Eine Double-Zahl mit acht Byte (64 Bit) wird in drei Felder unterteilt: s: 1 Bit, e: 11 Bits und f: 52 Bits.

Der Wert v der Zahl ergibt sich folgendermaßen:
  • Wenn 0 < e < 2047, ist v = (-1)s * 2(e-1023) * (1.f)
  • Wenn e = 0 und f <> 0, ist v = (-1)s * 2(-1022) * (0.f)
  • Wenn e = 0 und f = 0, ist v = (-1)s * 0
  • Wenn e = 2047 und f = 0, ist v = (-1)s * Inf
  • Wenn e = 2047 und f <> 0, ist v ein NaN
(Quelle: http://docwiki.embarcadero.com/RADSt...Der_Typ_Double)

Um auf die Komponenten zuzugreifen könnte man den Wert zerlegen, etwa so:
Delphi-Quellcode:
type
  TDouble64Rec = record
    Sign: TValueSign; // Unit System.Math
    Exp: NativeInt;
    Frac: Double; // eben ohne Sign und Exp
  end;
Wie kann man nun L und R bestimmen?
"Es gibt keine schlimmere Lüge als die Wahrheit, die von denen, die sie hören, missverstanden wird."
  Mit Zitat antworten Zitat