最も近い整数に変換-丸めなしこんにちは。
JMPは初めてなので、これは典型的な初心者の間違いだと思います。
10進数を四捨五入せずに整数に変換する必要があります。
例1:値0.5986がcolumn1からコピーされ、column2に保存されます。 0はcolumn2に保存する必要があります。 代わりに1が保存されています。
例2:値1.5986がcolumn1からコピーされ、column2に保存されます。 1はcolumn2に保存する必要があります。 代わりに2が保存されています。
Round(x、0)を使用してみましたが、数値は常に切り上げられます。
また、column1の値をフォーマットし、数値に変換して戻しました(失敗しました)。
Column1が定義されています:
New Column( "Time",
Numeric,
Continuous,
Format( Best, 12),
);
Column2が定義されています:
New Column( "WholeSeconds",
Numeric,
Continuous,
Format( Fixed Dec, 5, 0),
);
コード:
For Each Row(
lvTime = dt:Time;
dt:WholeSeconds = Round( lvTime,0);
);
どんな助けでも大歓迎です。
ありがとうございました。
スクリプティングRe:最も近い整数に変換-丸めなしFloor()関数とCeiling()関数を使用できます。
Re:最も近い整数に変換-丸めなしに加えて@txnelson 、これがそのコードです:
ご覧のとおり、数式を使用するか、その列に値を書き込むことができます。
可能であれば、テーブルがループなしで実行できる場合は、(行ごとに)ループを回避することをお勧めします。
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 ) ) )
);

Re:最も近い整数に変換-丸めなしありがとう、Georg、そしてtxnelson。
名前解決のヒントにも感謝します。 私はまだドキュメントでそれを見つけていませんでした。
ループを回避するための推奨事項は、パフォーマンスへの悪影響によるものだと思います。 そうですか? ループとテーブルの数式を使用した場合のパフォーマンスへの影響/違いは(大まかに)何ですか?
ありがとう!
ローレンス
Re:最も近い整数に変換-丸めなし親愛な@swanthog 、スクリプトで、行数が異なるテーブルで正方形y = x * xを計算するための3つの異なる方法をテストしました。
結果は、
- ループに10倍の時間がかかること
- テーブル操作として
- 行列の計算はテーブル演算の5倍高速です
また、クリーンなコードとエラーの減少という観点から、各要素に対処する機能が組み込まれている他のメソッド(テーブルとマトリックス)がある場合は、ループを回避することをお勧めします。
ただし、小さなスクリプトの場合、パフォーマンスに問題がなければ、ループも問題ありません。 また、(ライターの目には)読みやすさも重要です。
