In die nächste ganze Zahl umwandeln – keine RundungHallo.
Da ich neu bei JMP bin, bin ich mir sicher, dass dies ein typischer Anfängerfehler ist.
Ich muss eine Dezimalzahl ohne Rundung in eine ganze Zahl umwandeln.
Beispiel 1: Der Wert 0,5986 wird aus Spalte1 kopiert und in Spalte2 gespeichert. 0 sollte in Spalte2 gespeichert werden. Stattdessen wird 1 gespeichert.
Beispiel 2: Der Wert 1,5986 wird aus Spalte1 kopiert und in Spalte2 gespeichert. 1 sollte in Spalte2 gespeichert werden. Stattdessen wird 2 gespeichert.
Ich habe versucht, Round(x, 0) zu verwenden, aber die Zahl wird immer aufgerundet.
Ich habe auch versucht, den Wert aus Spalte 1 zu formatieren und ihn wieder in eine Zahl umzuwandeln (schlägt fehl).
Spalte1 ist definiert:
New Column( "Time",
Numeric,
Continuous,
Format( Best, 12),
);
Spalte2 ist definiert:
New Column( "WholeSeconds",
Numeric,
Continuous,
Format( Fixed Dec, 5, 0),
);
Code:
For Each Row(
lvTime = dt:Time;
dt:WholeSeconds = Round( lvTime,0);
);
Jede Hilfe wird sehr geschätzt.
Danke schön.
InhaltsorganisationDatenzugriffDatenmischung und -bereinigungMassenanpassungQualitäts- und VerfahrenstechnikErgebnisse teilen und kommunizierenBetreff: In die nächste ganze Zahl umwandeln – keine RundungLiebling @swanthog In einem Skript habe ich drei verschiedene Methoden zur Berechnung eines Quadrats y = x*x in einer Tabelle mit unterschiedlicher Zeilenanzahl getestet.
Das Ergebnis ist,
- dass die Schleife zehnmal länger dauert
- als Tabellenoperation
- und die Matrixberechnung ist 5x schneller als die Tabellenoperation
Auch im Hinblick auf sauberen Code und weniger Fehler ist es meiner Meinung nach eine gute Empfehlung, Schleifen zu vermeiden, wenn es andere Methoden (Tabelle und Matrix) gibt, die über eine integrierte Funktionalität zur Adressierung jedes Elements verfügen.
Aber für kleine Skripte und wenn die Leistung kein Problem darstellt, sind Schleifen auch in Ordnung. Auch die Lesbarkeit (für die Augen des Autors) zählt.

Betreff: In die nächste ganze Zahl umwandeln – keine RundungVielen Dank, Georg, und Txnelson.
Ich schätze auch den Tipp zur Namensauflösung. Ich war in der Dokumentation noch nicht darauf gestoßen.
Ich vermute, dass die Empfehlung zur Vermeidung von Schleifen auf negative Auswirkungen auf die Leistung zurückzuführen ist. Ist das richtig? Was (ungefähr) ist die Auswirkung/der Unterschied auf die Leistung bei der Verwendung von Schleifen gegenüber Tabellenformeln?
Danke!
Lawrence
Betreff: In die nächste ganze Zahl umwandeln – keine RundungZusätzlich zu @txnelson , hier ist der Code dafür:
Wie Sie sehen, können Sie eine Formel verwenden oder Werte in diese Spalte schreiben.
Wenn möglich, ist es besser, Schleifen (für jede Zeile) zu vermeiden, wenn Tabellen darauf verzichten können.
Names Default To Here( 1 );
cdt = New Table( "Example Floor",
add rows( 2 ),
New Column( "Time", Numeric, Continuous, Format( Best, 12 ), set values( [0.5986, 1.5986] ) ),
New Column( "WholeSeconds_formula", Numeric, Continuous, Format( Best, 12 ), Formula( Floor( :Time ) ) ),
New Column( "WholeSeconds_value", Numeric, Continuous, Format( Best, 12 ), set each value( Floor( :Time ) ) )
);

Betreff: In die nächste ganze Zahl umwandeln – keine RundungSie können die Funktionen Floor() und Ceiling() verwenden.