Preserve significant digits
Inputs are parsed as decimal strings and processed with integer arithmetic, preserving digits beyond JavaScript’s ordinary safe-integer range. For example, 9007199254740993 + 1 returns 9007199254740994.
Enter decimals or scientific notation such as 2.5e20. Each input allows up to 2,000 digits, with a scientific-notation exponent from −1,000 to 1,000. Comma separators and nondecimal bases are not accepted.
Precision and supported operations
Choose 0 to 100 maximum decimal places. Results round to nearest with exact ties away from zero, and unnecessary trailing zeros are removed. For example, 1 ÷ 8 at two decimal places returns 0.13; −1 ÷ 8 returns −0.13.
Addition, subtraction, multiplication, division and squares accept decimals. Powers require an integer exponent from −1,000 to 1,000, including reciprocal powers. Square roots return real nonnegative results. Factorials accept integers from 0 to 2,000; 0! equals 1.
Integer conventions and practical limits
Modulo, GCD and LCM require integers. Modulo uses the absolute divisor and returns a nonnegative residue: −7 modulo 3 is 2. GCD(0,0) returns 0 by this tool’s convention; an LCM with a zero operand is 0. Division and modulo by zero show errors, as do 0⁰ and negative real square roots.
Working values are limited to 10,000 digits. Powers that exceed that limit show an error instead of freezing the page or silently approximating. This is not an unlimited symbolic algebra system: fractional powers and complex roots are outside its scope. Numeric inputs are included in shared calculation links.