NormalizeDoubleによるMT4での数値の丸め方 - ページ 5

 
Dmitry Fedoseev:

以下は、あなたのコードです。

2の代わりに3を入れると0.036になります

うまくいった!ありがとうございます。3に正規化し、小数点以下の余分な桁を切り捨てています。

教えてください、カンマの後のH桁をトリミングする標準的な機能はあるのでしょうか?StringSubStrと 同様、小数である場合のみ。

 
Roman Starinskij:

そういうことなんだ!ありがとうございます。3桁に正規化した後、小数点以下の余分な桁を切り捨てています。

小数点以下のH桁をトリミングする標準的な機能があれば教えてください。StringSubStrと同様、小数である場合のみ。

画面(ログ)に表示する際に桁を切り詰めたい場合は、DoubleToString() があります。
 
Ihor Herasko:
画面(ログ)に出力するときに桁を切り詰めるということであれば、DoubleToString()がそれにあたります。

DoubleToStringは、NormalizeDouble() と同じように動作します。

 
Roman Starinskij:

そういうことなんだ!ありがとうございます。3桁に正規化した後、小数点以下の余分な桁を切り捨てています。

小数点以下のH桁をトリミングする標準的な機能があれば教えてください。StringSubStrと同様、小数である場合のみ。

必要ないため、そのような機能はありません。あなたの計算機は間違っています。
 
Roman Starinskij:

小数点以下H桁を切り捨てる標準的な関数があれば教えてください。StringSubStrと同様、小数である場合のみ。

私も使っていますが、「非標準」です。

//+------------------------------------------------------------------+
//| Double Crop function                                             |
//+------------------------------------------------------------------+
double DoubleCrop(double value,int crop)
  {
   string ValueToString="";
   ValueToString=DoubleToString(value,crop);
   return StringToDouble(ValueToString);
  }
//+------------------------------------------------------------------+
 
lilita bogachkova:

私も使っていますが、「カスタム」です。

天才的な動きとは?

string ValueToString="";
   ValueToString=DoubleToString(value,crop);
 
lilita bogachkova:

私も使っていますが、「出がらし」です。

ただ、DoubleToStringはトリミングをせず、NormalizeDoubleと 同じように丸めるという動作をしています。いや...ブルドーザーに乗るんだ
 

不具合が検出される。

   Alert(
         DoubleToStr(1.15,1)+" "+
         DoubleToStr(1.25,1)+" "+
         DoubleToStr(1.35,1)+" "+
         DoubleToStr(1.45,1)
         );

結果:1.1 1.3 1.4 1.5

1.15では廃棄があり、スチールナンバーでは四捨五入がありました。

 
Dmitry Fedoseev:

不具合が検出される。

結果:1.1 1.3 1.4 1.5

1.15では廃棄があり、スチールナンバーでは四捨五入がありました。

そうなんです、結果を確認せずに使ってしまったことを認めざるを得ません :((
 

開発者が削除するまで

それ

文字列Len

文字列の文字数(末尾の0を含まない)。

は、切り捨てについてどうすることもできません。