tt_ROUNDBANK function

dynamic tt_ROUNDBANK(
  1. dynamic v1,
  2. dynamic v2
)

tt_ROUNDBANK(value, decimals): banker's rounding (round half to even)

Implementation

dynamic tt_ROUNDBANK(dynamic v1, dynamic v2) {
  final val = varToDouble(v1);
  final d = varToInt(v2);
  final factor = pow(10, d).toDouble();
  final scaled = val * factor;
  final frac = scaled - scaled.truncateToDouble();
  final intPart = scaled.truncate();
  if ((frac - 0.5).abs() < 1e-10) {
    // exactly 0.5: round to even
    if (intPart.isOdd) {
      return (intPart + 1) / factor;
    } else {
      return intPart / factor;
    }
  }
  return (scaled + 0.5).truncateToDouble() / factor;
}