単純な減算による浮動小数点数エラーJMPが2つの単純な数字を正しく引き算できるかどうかはわかりませんが、次の数字を試しました。
16.11〜15.12
0.99(わかりました、これまでのところとても良い)
15.29〜15.18
0.109999999999999(これ以上良くない)
15.29-15.19
0.0999999999999997(7?)
それで、私が間違ったフックはどこにありますか?
これは、スクリプトエディタのJMP 12.2.0(64ビット)で発生します。
簡単な減算で再浮動小数点数エラー使っている
format(mean(y),6)
そのため、レポートでは非常に小さい数が1.574e-6に変換され、多くのスペースを使い果たしません。
しかし
Format( 1.2345, "Precision", 3)
「有効数字」のための方法です。
簡単な減算で再浮動小数点数エラー「有効数字」に関しては、「フォーマット」機能で「精度」フォーマットを使用することによってそれを得ることができます。また、表示のためにRound演算をスキップしたいだけならば、"Char"関数は2つの追加引数をサポートします。1つは幅用、もう1つは小数点以下の桁数用です。
Char( 15.29 - 15.19, 10, 2); // "0.10"
Format( 12.345, "Precision", 3); // "12.3"
Format( 1.2345, "Precision", 3); // "1.23"
元の問題に関しては、コンピュータは2を基数(2進数)で格納するが10を基数として表示するという事実に帰結し、"0.1"のような10を基数とする数字は基数2では正確な表現を持たない。
簡単な減算で再浮動小数点数エラー私はあなたが何を求めているのかわかりません。これらの関数に有効桁数と小数点以下の桁数を指定するオプションがあるかどうかを尋ねているのであれば、答えはnoです。私がそのようなオプションを追加することを検討するかどうかあなたが尋ねているならば、その要求はJMP開発のための問題です。
簡単な減算で再浮動小数点数エラー入力用のTHX、ちょっとした質問ですが、show、char、roundについて、オプションを "n有効数字"と見なしますか?それは大いに役立つでしょう。
簡単な減算で再浮動小数点数エラー問題を説明するためだけにJMPの問題ではない、Excelで何が起こるかはここにあります。
| バツ |
Y |
X - Yフォーミュラ |
| 16.11 |
15.12 |
0.99000000000000000 |
| 15.29 |
15.18 |
0.10999999999999900 |
| 15.29 |
15.19 |
0.09999999999999960 |
簡単な減算で再浮動小数点数エラーわかります。Round()関数を使用した私の例は、浮動小数点数の精度とそれに関連する算術の制限を処理するための1つの方法を説明することだけを目的としています。
使用しましたか助けて > 本 > スクリプティングガイドまたは助けて > スクリプトインデックス Round()またはChar()関数の機能を確認するには?
簡単な減算で再浮動小数点数エラーこのリソースを読みたいと思うかもしれません: JMPの数値精度スプレッドシートなどの他の一般的なソフトウェアに関するこのようなホワイトペーパーを見つけることができます。これは既知の問題ですが、通常は問題ではありません。
簡単な減算で再浮動小数点数エラー静かにしないで、それを少し「広げる」ために(そしてそれが私を悩ませている理由)、精度の量はユーザーの入力に依存するということです。
もし彼が15.29mmと15.19mmを使っていれば、Round(x、2)で正しい0.1mmを得るでしょう。
彼が0.01529mと0.01519mを使用する場合、彼は0mを得て、彼が結果を見た後でおそらく私のドアのseccandに立つでしょう。
そして、「有効数字」がroundやcharのようにサポートされているかどうかわかりません。
簡単な減算で再浮動小数点数エラーに数学単純な算術演算では、15.29 - 15.18 = 0.11と15.29 - 15のような違いがあります。19 = 0.10。しかし、JMPでの結果は有限精度演算コンピューターで。結果は、実数が浮動小数点数としてどのように表されるか、および算術演算子がこの表現でどのように機能するかによって異なります。演算子の結果と数学的結果が一致しない場合を見つけることは難しくありません。
JMPは、そのような演算に標準の浮動小数点数値ソフトウェアライブラリまたは専用のハードウェア浮動小数点プロセッサを使用することがあります。
拡張された、または「無制限」の精度(物理的なリソースによってのみ制限される)を使用するソフトウェアがいくつかありますが、一般的に回帰などの統計的手法の実際の結果は変わりません。
あなたの場合の一つの解決策は式やスクリプトで結果を丸めることです:
Round( 15.2900000 - 15.1900000, 2 )
そうすると結果は0.1になります。問題が解決しました。