Ich arbeite an einem Skript, um einige parametrische Daten zu überprüfen, die von einem Testprogramm generiert wurden. Die Tabelle, die ich habe, ist für einige Laserspektren, die einen einzelnen Spektralpeak und Peaks auf der linken und/oder rechten Seite haben. Ich möchte die Daten in JMP visualisieren, also habe ich dieses Diagramm erstellt:

Ich kann den Peak aus den Spektren mit einer Spalte hervorheben, die eine einfache Formel verwendet, um die Zeilen nur bei der SpectralPeakPower (ROT) zu füllen.
Wenn (: YValues == Col Max (: SpectralPeakPower, :LampWfr, :serial, :"LaserCurrent[mA]"n), : SpectralPeakPower)
Wenn ich jedoch dasselbe Konzept verwende, um die Leistung des linken Peaks zu berechnen, schlägt die Äquivalenzaussage fehl und daher wird die linke Peakleistung nicht in die Zeile eingetragen und im Diagramm NICHT hervorgehoben.

Beim Debuggen dieses Problems scheint es keinen logischen Grund dafür zu geben, dass die ==-Anweisung nicht zu 1 wird …
(-46,81 == -46,81) = 1, richtig!?!?! Ich werde beim Debuggen ein bisschen verrückt ...
Was sind die anderen möglichen Gründe dafür, dass == nicht 1 ist?
Ich habe in meinem Skript auch andere Fälle, in denen ein Rundungsfehler auftritt, und ich möchte eine ungefähr äquivalente Funktion verwenden: ~==. Gibt es eine solche Funktion bereits?
Ich kann die JMP-Datei zur Überprüfung privat an Mitarbeiter weitergeben.
Danke,
Könnte an der Gleitkommamathematik liegen.
Show(0.1 + 0.2, 0.1 + 0.2 == 0.3);
//0.1 + 0.2 = 0.3;
//0.1 + 0.2 == 0.3 = 0;
Sie können Round(), Floor() oder Ceiling() verwenden, um Ihre Werte zu runden.