ceil(),round(),floor()関数の実行速度 - ページ 2 12345678 新しいコメント Nikolai Semko 2017.08.25 00:14 #11 pavlick_:なぜロングにキャストしないのか?オーバーフローさせることもできますが、Intをオーバーフローさせる方がはるかに簡単です。もちろん、必要であればロングキャストも可能です。 Dmitry Fedoseev 2017.08.25 00:27 #12 y=ceil(x); -> y=(int)(x+1); x=3;y=3; y=4です。 pavlick_ 2017.08.25 00:29 #13 Nikolai Semko: もちろん、必要であればロングも可能です。方法を宣伝しているわけですから、バカスカ真似されますよ。一般的に、何のチェックもなしにこのようにキャストすることはできません、それはUBです。浮動実数型の有限値を_Bool以外の整数型に変換する場合、小数部は捨てられる(0に向かって切り捨てられる)。積分部の値が整数型で表現できない場合、動作は不定となる。 もしかしたら手付金を売るかもしれないし、他のことをやるかもしれない )) Nikolai Semko 2017.08.25 00:41 #14 pavlick_ :つまり、ある方法を宣伝していると、あからさまにコピーされるわけです。確認もせずにそんなキャスティングをしたらUBですよ。 もしかしたら、内金は売り切れるかもしれないし、また何かやるかもしれない )))。私は何も宣伝していません。アイデアを共有するそのためのフォーラムであり、ディスカッションです。 Nikolai Semko 2017.08.25 00:42 #15 Dmitry Fedoseev: x=3;y=3; y=4です。そうですね!ありがとうございます。 天井をどうにかしてみますね。 Nikolai Semko 2017.08.25 01:04 #16 y=ceil(x); -> y=(int)(x+1);ドミトリー・フェドセーエフ x=3;y=3; y=4です。をオプションとして選択することができますが、あまりきれいではありませんが、速度は同じです。y=ceil(x); -> y=(int)(x+0.999999999999999);#define _ceil(x) (int)((x)+0.999999999999999) double x=3; int y=_ceil(x); Alexey Navoykov 2017.08.25 03:19 #17 Nikolai Semko:をオプションでつけると、あまり良くないですが、スピードは同じです。それなら、x + 1 -DBL_MIN の方がいいかもしれません。または x + 1 -DBL_EPSILON.確認し てないので、試してみてください。ああ、負の数についてはどうですか?天井と床で異なるはずです Nikolai Semko 2017.08.25 12:44 #18 Alexey Navoykov:それなら、x + 1 -DBL_MIN の方がいいかもしれません。または x + 1 -DBL_EPSILON.確認し てないので、試してみてください。ああ、負の数についてはどうですか?天井と床で異なるはずですDBL_MIN とDBL_EPSILON は機能しません - これらは小さ すぎます。おそらく、0.99999999999(16ナイン - doubleの最大小数点数)のままにしておくのが賢明です。そうですね、負の数には別のアルゴリズムがあるのでしょう。ありがとうございました。最初の投稿で追記を行います。興味がある人 - 負の数の問題を解決する方法を考えることができます。個人的には、私の問題はすべて正の数に関するものなので、興味はありません。 A100 2017.08.25 12:59 #19 Nikolai Semko:0.99999999999999 (16ナイン - doubleの最大小数点以下の桁数) のままにするのがおそらく理にかなっています。void OnStart() { Print((int)(3.0 + 0.9999999999999999)); } 結果は確認されましたか? Nikolai Semko 2017.08.25 13:03 #20 A100:void OnStart() { Print( (int)(3 + 0.9999999999999999)); } はい、でも、もし。x=3; int Y=(int)ceil(x); Print(Y); Y=(int)(x+0.999999999999999); Print(Y);であれば、問題ないでしょう。コンパイラの奇跡:)) 12345678 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
なぜロングにキャストしないのか?オーバーフローさせることもできますが、Intをオーバーフローさせる方がはるかに簡単です。
もちろん、必要であればロングキャストも可能です。
x=3;
y=3; y=4です。
もちろん、必要であればロングも可能です。
方法を宣伝しているわけですから、バカスカ真似されますよ。一般的に、何のチェックもなしにこのようにキャストすることはできません、それはUBです。
つまり、ある方法を宣伝していると、あからさまにコピーされるわけです。確認もせずにそんなキャスティングをしたらUBですよ。
もしかしたら、内金は売り切れるかもしれないし、また何かやるかもしれない )))。私は何も宣伝していません。アイデアを共有するそのためのフォーラムであり、ディスカッションです。
x=3;
y=3; y=4です。
そうですね!ありがとうございます。 天井をどうにかしてみますね。
ドミトリー・フェドセーエフ
x=3;
y=3; y=4です。
をオプションとして選択することができますが、あまりきれいではありませんが、速度は同じです。
をオプションでつけると、あまり良くないですが、スピードは同じです。
それなら、x + 1 -DBL_MIN の方がいいかもしれません。または x + 1 -DBL_EPSILON.確認し てないので、試してみてください。
ああ、負の数についてはどうですか?天井と床で異なるはずです
それなら、x + 1 -DBL_MIN の方がいいかもしれません。または x + 1 -DBL_EPSILON.確認し てないので、試してみてください。
ああ、負の数についてはどうですか?天井と床で異なるはずです
DBL_MIN とDBL_EPSILON は機能しません - これらは小さ すぎます。おそらく、0.99999999999(16ナイン - doubleの最大小数点数)のままにしておくのが賢明です。
そうですね、負の数には別のアルゴリズムがあるのでしょう。ありがとうございました。最初の投稿で追記を行います。
興味がある人 - 負の数の問題を解決する方法を考えることができます。個人的には、私の問題はすべて正の数に関するものなので、興味はありません。
0.99999999999999 (16ナイン - doubleの最大小数点以下の桁数) のままにするのがおそらく理にかなっています。
A100:
はい、でも、もし。
であれば、問題ないでしょう。コンパイラの奇跡:))