2016-04-29 4 views
1

Es gibt zwei verschiedene IEEE-Standards für die Fließkommaberechnung. IEEE 754 (b = 2) und IEEE 854 (b = 2 oder b = 10). SQLLite wiki sagt:Welche IEEE-Standardeinstellungen verwendet SQLLite zum Speichern von REAL-Werten? Wird IEEE 754 doppelt verlustfrei gespeichert?

REAL. Der Wert ist ein Gleitkommawert, der als 8-Byte-IEEE-Fließkommazahl gespeichert wird.

Ich muss IEEE 754 Double in der SQLLite-Spalte speichern und später diesen Wert lesen (keine Notwendigkeit arithmetisch). Kann ich sicher sein, dass ich den gleichen Binärwert lesen werde (754 hat eine einzigartige Binärdarstellung), einschließlich aller Arten von NaN usw. (mit anderen Worten: ist SQLLite verlustfrei in Bezug auf IEEE754 verdoppelt)?

Antwort

1

ich denke, es auf der SQLite-Version hängt (Es ist nicht, lesen Sie weiter unten)

ich andere Definitionen für REAL gefunden habe:

REAL: Der Wert ist ein Fließ- Punktnummer, gespeichert als 8-Byte-Wert im nativen Format des Prozessors. Für die meisten modernen Prozessoren ist dies eine IEEE 754-Nummer mit doppelter Genauigkeit. Literale Fließkommazahlen werden durch eine beliebige Reihe numerischer Ziffern dargestellt, die einen Dezimalpunkt oder Exponenten enthalten.

Source

Eine ähnliche Definition ist in O'Reily gefunden Using Sqlite

Aber neueste sqlite3 sagt IEEE, so dass es IEEE ist 754


EDIT:

SQLite Version 2. * war typeless.

the oldest version of the doc ich gefunden habe, passt mit SQLite 3.0.0 Alpha Release-Datum und hat sich nicht geändert.

Die Bücher, die ich zitiert habe, könnten auf der Vor-Alpha-Dokumentation basieren.