```sql
SELECT
    floor(toDecimal64(1232.123132, 4) AS D64),
    ceiling(D64),
    round(D64),
    roundBankers(D64),
    floor(toDecimal128(1232.123132, 24) AS D128),
    ceiling(D128),
    round(D128),
    roundBankers(D128),
    floor(toDecimal256(1232.123132, 24) AS D256),
    ceiling(D256),
    round(D256),
    roundBankers(D256)
FORMAT Vertical

Query id: 04db8c13-4888-47b6-908b-ba1268138f26

Row 1:
──────
floor(toDecimal64(1232.123132, 4)):          1232
ceil(toDecimal64(1232.123132, 4)):           1233
round(toDecimal64(1232.123132, 4)):          1232
roundBankers(toDecimal64(1232.123132, 4)):   1232
floor(toDecimal128(1232.123132, 24)):        1232.12311679615299966394772
ceil(toDecimal128(1232.123132, 24)):         1232.123135242897073373499335
round(toDecimal128(1232.123132, 24)):        1232.123135242897073373499335
roundBankers(toDecimal128(1232.123132, 24)): 1232.123135242897073373499335
floor(toDecimal256(1232.123132, 24)):        1232.12311679615299966394772
ceil(toDecimal256(1232.123132, 24)):         1232.123135242897073373499335
round(toDecimal256(1232.123132, 24)):        1232.123135242897073373499335
roundBankers(toDecimal256(1232.123132, 24)): 1232.123135242897073373499335
```

x += scale - 1;
                return x / scale * scale;
            }
            case RoundingMode::Round:
            {
                if (x < 0)
                    x -= scale;
                switch (tie_breaking_mode)
                {
                    case TieBreakingMode::Auto:
                        x = (x + scale / 2) / scale * scale;
                        break;
                    case TieBreakingMode::Bankers:
                    {
                        T quotient = (x + scale / 2) / scale;
                        if (quotient * scale == x + scale / 2)
                            
                            x = ((quotient + (x < 0)) & ~1) * scale;
                        else
                            
                            x = quotient * scale;
                        break;
                    }
                }
                return x;
            }
        }
        __builtin_unreachable();
    }
    static ALWAYS_INLINE T compute(T x, T scale)