MQL4およびMQL5でDigits()をバイパスして任意の数値(引用符だけでなく)の小数点以下桁数を取得 - ページ 2

 
fxsaber:

はい、8つです。

ではなぜ。

void OnStart()
{
        double price = 500000000.0001;
        Print( price, ":", Digits_values( price ));
}

Digits_values は 4 を返す ?

結果:500000000.0001:4

 

小数点以下は何桁ですか?

void OnStart()
{
        double price = 5000000000.0001;
        Print( price, ":", GetDigits( price ));
}

どうやらコンピューターが数え切れないほど多いようだ。

結果:?

 
A100:

ではなぜ

Digits_values は 4 を返す ?

結果:500000000.0001:4

文字列変換を勉強する。

 
A100:

小数点以下は何桁ですか?

どうやらコンピューターが数え切れないほど多いようだ。

結果:?

ええ、1/3くらいです。

 
A100:

良い解決策は、通常、正しく機能する

全て確認したわけではないかもしれませんが、MQL4で2回ほどテストしたところ、出力値は正常でした

 
fxsaber:

キャストからストリングまで研究する。

コンバージョンとどう関係があるのでしょうか?ソース番号500000000.0001が あります。

問題は小数点以下が何桁なのか?答えは4で、8個あります。

 
A100:

ソース番号500000000.0001が あります。

ダブルスにはそのような数値はありません。500000000.00010001016593933105という近似値もあります。割り当てられているのです。

 
A100:

コンバージョンとどう関係があるのでしょうか?初期値として500000000.0001が あります。

問題は、小数点以下が何桁か?答えは4で、8個あります。

8個ある」ではなく、mqlにはデフォルトで8個あります。ドキュメントを読んではいけないのでしょうか?

 
Alexandr Sokolov:

小数点以下の桁数を取得する必要があり、Digits()関数が 引用符でしか動作せず、しかもどこにも情報がない(少なくともこの記事を書いている時点では、今まで見つけられなかったので、どんな解決策があるかを紹介したい)という珍しい状況に陥ったのは、私だけではないと思うんです。


それは、判明したように、平凡な単純な本質が、まだ1つの欠点を持っている - それらの後に他の数字がない場合、この関数は、ゼロを認識しません。例えば、この関数は0.01が続くと2を返しますが、0.0000が続くと0を返します(これは4つのゼロを見ることができないことを意味します)。だから、この欠点を考慮して開発を進めてください。


MQL4でのコード



Valueのパラメーターが青色になっているのは、ちょっと気になりませんか?

 
Алексей Тарабанов:

Valueのパラメータが青色になっていることが、少しも気にならないのでしょうか?

ここではなぜかそうなっていますが、エディタではいつもと同じです