2021年5月19日更新
デバッグ機能を追加
// 数値を正確な10進数のテキスト文字列に変換する。 string DoubleToStringExact(double value); // 数値を生の16進数テキスト文字列に変換する。 string DoubleToHexadecimal(double value);
2021年5月21日更新
雑多な機能を追加
// 範囲 [min, max] の x を別の範囲 [new_min, new_max] の y に変換する。 // これは、インジケータ値やグラフィック・オブジェクトのスケールを変更するために使用できます。 double map_range(double x, double min, double max, double new_min, double new_max); // 小数点以下の桁数を取得する。 int GetDigits(double number);
2021年5月27日更新
デバッグ用関数を追加
// イプシロン(ulps)で表された2つの浮動小数点数の差分を int で返します。 long UlpDiff(const double num1, const double num2); // x の次に表現可能な値を返す。 double nextafter(double num);
雑多な関数を追加
bool IsRound(const double number, const int digits); bool IsRoundToStep(const double number, const double step);
C#スクリプト「dotnet_cross_check.mq5」と「RoundSharp.dll」を追加。
2021年5月30日更新
雑多な関数を追加
// 小数点の左側の整数桁数を取得する。 int IntegerDigits(double number); //スケール[min, max]上のxを正規化スケール[0, 1]にマップする。 double normalize(double x, double min, double max);
倍数のバイナリ表現のための便利な関数
//ビット表現に対応するダブル値を返す。 double LongBitsToDouble(long bits); //ダブル値に対応するビット表現を返す。 long DoubleToLongBits(double value); //ビット表現で使用される不偏指数を返す。 int GetExponent(double value); //ビット表現で使用された仮数を返す。 long GetMantissa(double value); //引数のulpのサイズを返す。 double Ulp(double value);
倍数の文字列表現のための便利な関数
// 数値を最短の文字列表現に変換する // 同じ数値にラウンドトリップする。 string Repr(double value);
2021年6月1日更新
新機能を追加しました:
// 指数の生のエンコードをビット表現で返す。 int RawExponent(double value); // ビット表現におけるシグニフィカンドの生のエンコードを返す。 long RawSignificand(double value); // double 型の値の、バイアスされていない(調整された)指数を返します。 int Exponent(double value); // double 型の値のシグニフィガンドを返します。 double Significand(double value); // 数がdoubleで正確に表現可能かどうかを判断する。 bool IsExactDouble(double value); // 数値を千単位で区切る。 string FormatNumber(const double number,const string separator=",");
2021年6月17日更新
新機能を追加しました:
// 渡された値が整数かどうかを判定します。 bool IsInteger(double num); // 小数部を取得(常に正) double GetFraction(double num); // 数値を境界(範囲)でクリッピング(制限)する。 template<typename T> T Clip(T value, T low, T high); // mqlでは、ゼロ除算エラーはmqlプログラムを停止させる。 double safeDiv(double x, double y); // 数値を16進数の浮動小数点定数文字列に変換する。 string DoubleToHexFloatConstant(double value);
2021年6月20日更新
新機能を追加しました:
// 浮動小数点数を指定された ULP 数だけ進める。 double DoubleAdvance(double value, long distance);
2021年6月21日更新
関数のようなマクロを追加:
// ラウンドトリップ("%.17g")フォーマット指定子を使用して2倍を表示する。 #define PRINT_R(A) Print(#A + " = ", Repr(A))
これらはmt4に追加できますか? mt4でこれらをテストしましたか?(インクルードファイルのことです)
2023年1月27日更新
丸め関数の名称を変更:
double MathRound(const double value, const int digits); double MathRound(const double value, const double step); double MathFloor(const double value, const int digits); double MathFloor(const double value, const double step); double MathCeil(const double value, const int digits); double MathCeil(const double value, const double step); double MathTrunc(const double value, const int digits); double MathTrunc(const double value, const double step);
倍精度比較関数を2つ追加:
//+------------------------------------------------------------------+ //| ほぼ等しいかチェックする。 //| 2つのダブルスのバイナリ表現が||以上異なる場合 //| 最下位ビット(ulp)が1つでもあれば、この関数は偽を返します。 //+------------------------------------------------------------------+ bool AlmostEqual(const double a, const double b); //+------------------------------------------------------------------+ //| 2つの浮動小数点数の値が近いかどうかをチェックする。 //| ここで、nは失われた有効桁数である。 //| 丸め誤差(最大許容精度差). //| n = 2または3のようなものが、実際には通常機能する。 //+------------------------------------------------------------------+ bool IsClose(const double a, const double b, const int maxDifferentSignificantDigits = 2);
取引の機会を逃しています。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
数学ユーティリティ:
作者: amrali