mql5言語の特徴、微妙なニュアンスとテクニック - ページ 145 1...138139140141142143144145146147148149150151152...247 新しいコメント fxsaber 2019.10.28 12:42 #1441 TheXpert: 2番目の数字が無効なダブルフォーマットになっていると思いますが、プリンタ、オペレーションともに有効です。 有効です。 #include <TypeToBytes.mqh> // https://www.mql5.com/ru/code/16280 void OnStart() { double Num = 0; _W(Num) = (uchar)1; for (int i = 0; i < 324; i++) Num *= 10; Print(Num); // 4.940656458412466 } Igor Makanu 2019.10.28 12:45 #1442 fxsaber:有効です。 上の例で示したように比較してくださいNum!=Num- もし真なら、このダブルは無効ですが、Print() はそこに何を書き込むのでしょうか ...まあ、七つの封印の謎のようなものだ fxsaber 2019.10.28 12:50 #1443 Igor Makanu: 上の例で示したように比較してくださいNum!=Num- もし真なら、このダブルは無効で、Print()はそこに何を書き込むか ...まあ、7つの秘密の裏側みたいなものですね。 もちろん、それは偽りである。これは普通の数字です。NaNは全く対象外です。 TheXpert 2019.10.28 12:52 #1444 fxsaber: はい、MathIsValidNumberは trueと表示します。 fxsaber 2019.10.28 12:55 #1445 TheXpert: はい、MathIsValidNumberはtrueと表示します。 この数字を計算で求める方法です。 void OnStart() { double Num = 5; for (int i = 0; i < 324; i++) Num /= 10; Print(0.1 * Num == 0); // true } Igor Makanu 2019.10.28 13:08 #1446 void OnStart() { double Num = 5; for (int i = 0; i < 324; i++) { Num /= 10; Print(Num, " : ", 0.1 * Num == 0); // true } Print(Num!=Num); Print(DBL_MIN); } 2019.10.28 17:05:40.503 tst1 (EURUSD,H4) 4.940656458412465e-323 :true 2019.10.28 17:05:40.503 tst1 (EURUSD,H4) 4.940656458412465e-324 :true 2019.10.28 17:05:40.503 tst1 (EURUSD,H4) false 2019.10.28 17:05:40.503 tst1 (EURUSD,H4) 、2.225073858507201e-308。 精度倍増の限界を超えているのでは? UPDです。 そうだ void OnStart() { double Num = 5; for (int i = 0; i < 324; i++) { Num /= 10; // Print(Num, " : ", 0.1 * Num == 0); // true Print(Num, " : ",Num - DBL_MIN > 0.0 ); } Print(Num!=Num); Print(DBL_MIN); } //_______________________________________________________________________ 削除済み 2019.10.28 13:13 #1447 fxsaber: これは理解できない。 DBL_MIN は非最小の正の倍数である。 DBL_MIN は正規化された数値を 返し、それ以下は非正規化された数値を返します。 #include <limits> #include <iostream> using namespace std; int main() { cout << numeric_limits<double>::min() << " " << numeric_limits<double>::denorm_min() << endl; } 2.22507e-308 4.94066e-324 fxsaber 2019.10.28 13:15 #1448 とにかく、「DBL_MINより 小さい正の整数が存在する」という、よく知られたステートメントが確立されたのだと思います。 #define DBL_MIN_CORRECT (5 e-324) // Минимальное положительное double-значение Igor Makanu 2019.10.28 13:18 #1449 fxsaber: とにかく、DBL_MINより 小さい正の整数が存在するという、よく知られた文言はわかったはずだ。 そうそうが、ゼロで割るという疑問は残りますね? 4.940656458412465e-324という数字は絶対に0ではないし、そんな数字で割るのは禁じ手? fxsaber 2019.10.28 13:20 #1450 Igor Makanu: そうそうが、ゼロで割るという問題はまだ残っていますよね? 最初の投稿からクローズドでした。最小の数字に1より小さいものをかけると、0になる。 1...138139140141142143144145146147148149150151152...247 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
2番目の数字が無効なダブルフォーマットになっていると思いますが、プリンタ、オペレーションともに有効です。
有効です。
有効です。
上の例で示したように比較してくださいNum!=Num- もし真なら、このダブルは無効ですが、Print() はそこに何を書き込むのでしょうか ...まあ、七つの封印の謎のようなものだ
上の例で示したように比較してくださいNum!=Num- もし真なら、このダブルは無効で、Print()はそこに何を書き込むか ...まあ、7つの秘密の裏側みたいなものですね。
もちろん、それは偽りである。これは普通の数字です。NaNは全く対象外です。
はい、MathIsValidNumberは trueと表示します。
はい、MathIsValidNumberはtrueと表示します。
この数字を計算で求める方法です。
2019.10.28 17:05:40.503 tst1 (EURUSD,H4) 4.940656458412465e-323 :true
2019.10.28 17:05:40.503 tst1 (EURUSD,H4) 4.940656458412465e-324 :true
2019.10.28 17:05:40.503 tst1 (EURUSD,H4) false
2019.10.28 17:05:40.503 tst1 (EURUSD,H4) 、2.225073858507201e-308。
精度倍増の限界を超えているのでは?
UPDです。
そうだ
これは理解できない。
DBL_MIN は非最小の正の倍数である。
DBL_MIN は正規化された数値を 返し、それ以下は非正規化された数値を返します。
2.22507e-308 4.94066e-324
とにかく、「DBL_MINより 小さい正の整数が存在する」という、よく知られたステートメントが確立されたのだと思います。
とにかく、DBL_MINより 小さい正の整数が存在するという、よく知られた文言はわかったはずだ。
そうそうが、ゼロで割るという疑問は残りますね?
4.940656458412465e-324という数字は絶対に0ではないし、そんな数字で割るのは禁じ手?
そうそうが、ゼロで割るという問題はまだ残っていますよね?
最初の投稿からクローズドでした。最小の数字に1より小さいものをかけると、0になる。