Problem mit dem Formeldatentyp? - Falsche Ausgabe beim Vergleich zweier SpaltenHallo,
Ich habe ein seltsames Problem in JMP, das ich scheinbar nicht erklären kann. In meiner Tabelle vergleiche ich Werte in zwei Spalten. Spalte „A“ ist nur eine einfache fortlaufende numerische Spalte mit ganzzahligen Werten im Bereich von 0 bis 100. Spalte „B“ ist eine weitere einfache fortlaufende numerische Spalte mit Zahlen im Bereich von 0 bis 1, alle mit einer Genauigkeit von bis zu zwei Dezimalstellen. Anschließend erstelle ich eine Spalte „C“, um „A“ und „B“ direkt zu vergleichen, indem ich in „C“ eine Formel festlege: B*100. Wenn ich dann jedoch die Spalten „A“ und „C“ vergleiche, sind A und C in einigen Fällen tatsächlich gleich, JMP sagt jedoch, dass dies nicht der Fall ist. Dies sollte ein einfacher Vergleich sein, aber aus irgendeinem Grund sind bestimmte Zahlen nicht vergleichbar. Das Ändern der Spalte „C“ in „Zeichen“ und dann zurück in „Numerisch“ behebt dieses Problem, aber ich habe das Gefühl, dass ich das eigentlich nicht tun sollte ... Kann jemand bitte das zugrunde liegende Problem erklären?
Ich habe einen Beispieldatensatz angehängt, der alle möglichen Zahlen auflistet. Sie können sehen, dass das Problem in den Zeilen 7, 14, 28, 29, 55, 56, 57 und 58 auftritt.
Würde mich hier über jeden Einblick freuen.
Danke schön,
Melissa
Betreff: Problem mit dem Formeldatentyp? - Falsche Ausgabe beim Vergleich zweier SpaltenAh, ja, du hast recht. Vielen Dank!
Betreff: Problem mit dem Formeldatentyp? - Falsche Ausgabe beim Vergleich zweier SpaltenDas Problem liegt bei Gleitkomma-/Binärzahlen.Nicht alle Zahlen können exakt als exakte Eingabe gespeichert werden.Das ist eine der langfristigen Tatsachen bei Computern.Und JMP speichert seine numerischen Daten in dieser Formel und korrigiert sie dann bei der Anzeige wieder auf den korrigierten Wert.Dies ist ein Problem bei fast allen Systemen, die numerische Analysen durchführen.
Wenn ich mich an die Zeit zurück erinnere, glaube ich, dass die Zahl 3 nicht gespeichert werden kann und in Wirklichkeit als etwa 2,9999999999998 gespeichert wird.Ich könnte mich bei der Nummer 3 irren, aber ich hoffe, Sie verstehen, worauf es ankommt.
Betreff: Problem mit dem Formeldatentyp? - Falsche Ausgabe beim Vergleich zweier Spalten@melissacch ,
Anstatt die Daten zu kopieren oder manuell einzugeben, könnten Sie versuchen, ein Skript für Ihre Tabelle zu erstellen?
Hier ist ein Beispiel. Ich kann keinen einfachen Weg finden, eine Reihe von Dezimalzahlen zu generieren. Aber wenn Sie so etwas tun würden, würden Sie meiner Meinung nach das Problem der Rundung vermeiden.
dt = New Table();
Set1 = Index(1,100);
Set2 = Index(0.01,1); // This doesn't work
dt << New Column("A",Format("Fixed Decimal",10,2),Numeric,Continuous,<< Set Values(Set1))
<< New Column("B",Format("Fixed Decimal",10,2),Numeric,Continuous,<< Set Values(Set2))// Will Fail
<< New Column("B*100",Format("Fixed Decimal",10,2),Numeric,Continuous,Formula(:B*100))
<< New Column("Check1",Format("Fixed Decimal",10,2),Numeric,Continuous,Formula(:A == :Name("B*100")));Betreff: Problem mit dem Formeldatentyp? - Falsche Ausgabe beim Vergleich zweier SpaltenHallo @uday_guntupalli
Vielen Dank für die Antwort. Ich hätte mir den Unterschied ansehen und erkennen sollen, dass es sich um ein Rundungsproblem handelte. Irgendeine Idee, warum JMP diese winzigen Unterschiede erzeugt? Ich habe diese Zahlen manuell eingegeben, daher sollte es keine weiteren Dezimalstellen/Präzisionen geben.
Betreff: Problem mit dem Formeldatentyp? - Falsche Ausgabe beim Vergleich zweier Spalten@melissacch ,
Es handelt sich um ein Rundungsfehlerproblem. Wenn Sie die Datentabelle sehen, die ich angehängt habe, habe ich eine neue Spalte eingefügt, in der die Differenz zwischen den beiden Spalten berechnet wird. Es gibt einen winzigen Wert, weshalb JMP ungleich zurückgibt.
Hoffe das hilft