Frage

Das Problem ist das, wenn ich hinzufügen, zwei oder mehr verdoppelt sich von einer Tabelle zu einer Ansicht, statt mir die richtigen Ergebnisse zu geben, fügt es eine etwa zehn oder so mehr Ziffern. Beispielsweise 0,5 + 1,5 = 5,5 + 1,99999999998 oder 8,5 = 14,0000000001. Irgendwelche Ideen? (Ich weiß, dass diese Art von n00b Frage ist, und ich erinnere mich, die mit Sachen zu beschäftigen, wie das in den Prüfungen in der 9. Klasse, aber ich kann einfach nicht mehr, wie ich tat es damals: P)

War es hilfreich?

Lösung

http://dev.mysql.com/ doc / refman / 5.0 / de / string-functions.html # function_format

Sie können die Zahlen formatiert werden auf diese Weise, wenn das ist, was Ihr nach?

Andere Tipps

Hinzufügen von 1 und 1 als Schwimmer oder verdoppelt wird nicht in irgendetwas, aber 2 zur Folge haben sollte.

Ich finde es schwer zu glauben, dass 0,5 + 1,5 kommt zu nichts weniger als 2.

All diese Zahlen in binär Gleitkomma korrekt dargestellt werden.

Ich hasse ich sagen Sie nicht, Ihre Beispiele glauben, aber ich weiß nicht. : -)

Aber ich glaube, dass Sie Probleme mit einer Reihe haben könnten wie 1.1.

Warum? Da 1/10 stellt sich heraus, eine sich wiederholende dezimal binär sein.

Das Problem kommt, wenn man versucht, Gleitkommazahlen zwischen dezimal und binären Darstellungen zu konvertieren. Einige Zahlen machen die Reise in Ordnung, aber andere sind nur angenähert.


Wenn Sie jedoch Beispiele wirklich so funktionieren, habe ich keine Ahnung, was passiert ist, und ich würde gerne wissen.

  
    

Gleitkommazahlen sind immer nur Annäherungen. :-) Wenn Präzision Angelegenheiten, einen weg heraus, ganze Zahlen zu verwenden.

  

Nach meiner Erfahrung, wenn ich Dezimal-Datentyp anstelle von float / double verwendet, habe ich bekam immer die genauen Ergebnisse.

Dieser Artikel das Problem ziemlich gut erklärt.

Auf dem Punkt gebracht, sehr groß oder sehr klein Gleitkommazahlen in einem Verlust der Genauigkeit bei Berechnungen zur Folge haben können.

Sie ganze Zahlen nicht erwarten, wenn Sie mit Floating-Point-Typen arbeiten.

Nicht sicher, ob Sie suchen nach einer Erklärung oder eine Lösung, aber da Sie bereits Hinweise auf gute Erklärungen bekommen ....

Wenn Sie Ihre Zahlen müssen wie ganze Zahlen zu verhalten, verwenden Sie ganze Zahlen. Wenn Sie eine endliche Genauigkeit benötigen (dh zwei Dezimalstellen, für Felder, das Geld darstellen), speichern Sie es als eine ganze Zahl sowieso, aber multiplizieren sie mit, was auch immer den Faktor 10 müssen Sie das Dezimalsystem um loszuwerden, wenn man es in einem die Datenbank und dividieren durch die gleiche, wenn Sie es ziehen wieder aus.

Also, wenn Sie ein Widget sind vertreten, dass Sie 399 $ 3.99, setzen Sie in das Feld WIDGET.cost kostet.

Keine Ahnung, ob das für Ihre Situation zutrifft oder nicht. Aber die allgemeine Faustregel gilt, dass Gleitkommazahlen sind immer nur Annäherungen. :-) Wenn Präzision Angelegenheiten, einen weg heraus, ganze Zahlen zu verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top