Rounding looks trivial until two tools give you different answers for 2.5. The reason is almost never a bug β it is the rounding mode. This calculator exposes every common mode, lets you round by place value, decimal places, or significant figures, and shows all modes side by side so you can see exactly where they diverge.
Why 2.5 rounds differently
An exact half is the only case where rounding rules disagree. Round half up pushes 2.5 to 3; round half down pushes it to 2; banker's rounding (round half to even) sends it to 2 because 2 is even, but rounds 3.5 to 4. For any value that is not exactly halfway, every mode that rounds to the nearest integer agrees. That is why most numbers behave identically everywhere and only the halves cause arguments.
Banker's rounding and bias
If you always round halves up, a long list of numbers ending in .5 drifts upward β every tie adds a little, and the total ends up larger than the true sum. Banker's rounding fixes this by sending half of the ties up and half down (to the nearest even number), so the errors cancel over many values. This is the default in the IEEE 754 floating-point standard and in most financial and statistical software, which is why a spreadsheet may quietly disagree with the round-half-up rule you learned in school.
Significant figures vs decimal places
Decimal places count digits to the right of the point, regardless of the number's size: 3.14159 to two decimals is 3.14, and 12345.678 to two decimals is 12,345.68. Significant figures count meaningful digits from the first non-zero digit, so they track precision across magnitudes: 0.0034567 to three sig figs is 0.00346, and 12,345 to three sig figs is 12,300. Use decimal places for money and fixed-format reports; use significant figures for scientific measurements where the magnitude varies.
Negatives and directed rounding
Negative numbers expose the difference between directed modes. Ceiling always moves toward positive infinity, so -2.7 becomes -2; floor moves toward negative infinity, so -2.3 becomes -3. Truncate (toward zero) drops the fraction, turning -2.9 into -2, while away from zero turns -2.1 into -3. JavaScript's built-in rounding helpers are biased for negatives β Math.round turns -2.5 into -2 (toward +infinity) β which is exactly why this calculator implements each mode explicitly instead of relying on them.