https://minagachi.com/round-up-down
//+------------------------------------------------------------------+ //| Function: round down | //+------------------------------------------------------------------+ double RoundDown(double val, int digit) { return ((double)(int)(val * MathPow(10, digit))) / MathPow(10, digit); /* 上記式は、以下の手順を1行に集約したもの double rev1 = val * MathPow(10, digit); // valに10のdigit乗を掛けて小数点位置をずらす int rev2 = (int)rev1; // 整数に型変換することで小数点以下をカット double rev3 = (double)rev2; // データ型をdoubleに戻す double rev4 = rev3 / MathPow(10, digit); // 10のdigit乗で割って小数点位置を元に戻す return rev4; */ }
//+------------------------------------------------------------------+ //| Function: round up | //+------------------------------------------------------------------+ double RoundUp(double val, int digit) { double adjust = (val >= 0)? 0.9 : -0.9; return ((double)(int)(val * MathPow(10, digit) + adjust)) / MathPow(10, digit); /* 上記式は、以下の手順を2行に集約したもの double adjust = (val >= 0)? 0.9 : -0.9; // valが0以上の場合はajust=0.9、そうでなければadjust=-0.9 double rev1 = val * MathPow(10, digit); // valに10のdigit乗を掛けて小数点位置をずらす double rev2 = rev1 + adjust; // adjustの値を足す int rev3 = (int)rev2; // 整数に型変換することで小数点以下をカット double rev4 = (double)rev3; // doubleに戻す double rev5 = rev4 / MathPow(10, digit); // 10のdigit乗で割って小数点位置を元に戻す return rev5; */ }