π Full Documentation: https://a-calc.vercel.app/
A powerful and easy-to-use JavaScript library for precision arithmetic and number formatting.
- Precision Arithmetic β Solves JavaScript floating-point issues (
0.1 + 0.2 = 0.3) - Rich Formatting β Thousands separators, percentages, fractions, scientific notation, compact format
- Unit Arithmetic β Calculate with units attached to numbers
- Chain API β Fluent chainable arithmetic (
cadd(1,2).mul(3)()) - Aggregation β
calc_sum,calc_avg,calc_max,calc_min,calc_count - Multiple Compute Modes β Decimal (default), BigInt, WASM
- High Performance β Fastest among similar libraries
- TypeScript β Full type support with smart inference
npm install a-calcimport { calc, fmt, cadd } from "a-calc";
// Precision arithmetic
calc("0.1 + 0.2"); // "0.3"
calc("0.1 + 0.2 * 0.3 / 0.4 * (0.5 + 0.6)"); // "0.265"
// Variables
calc("a + b", { a: 1, b: 2 }); // "3"
calc("price * qty | =2", { price: 9.9, qty: 3 }); // "29.70"
// Formatting
calc("1234567 | ,"); // "1,234,567"
calc("1234567 | =2,"); // "1,234,567.00"
calc("1234567 | !c"); // "1.23M"
// Direct formatting (v3.0)
fmt(1234567, "=2,"); // "1,234,567.00"
fmt(1234567, "!c"); // "1.23M"
// Chain API (v3.0)
cadd(100, 200, 300)(); // "600"
cadd(100, 200).mul(2)("=2,"); // "600.00"
// Aggregation (v3.0)
import { calc_sum, calc_avg, calc_max, calc_min } from "a-calc";
calc_sum("price", [{ price: 10 }, { price: 20 }]); // "30"
calc_avg("score", [{ score: 80 }, { score: 90 }]); // "85"Evaluate expression with optional variables and formatting.
calc("a * b + c", { a: 1, b: 2, c: 3 }); // "5"
calc("100 + 200 | ,"); // "300"
calc("0.1% + 0.2%", { _unit: true }); // "0.3%"
calc("a > 10 ? a * 0.9 : a", { a: 15 }); // "13.5"Format a number directly (v3.0 new API).
fmt(1234567, ","); // "1,234,567"
fmt(0.1234, "=2"); // "0.12"
fmt(1234567, "!c:wan"); // "123.45δΈ"| Token | Description | Example |
|---|---|---|
=N |
Fixed N decimals | =2 β "1.00" |
<=N |
At most N decimals | <=2 β "1.1" |
>=N |
At least N decimals | >=2 β "1.00" |
, |
Thousands separator | "1,000" |
+ |
Show positive sign | "+1" |
%% |
Percentage | "50%" |
// |
Fraction | "1/2" |
!e |
Scientific notation | "1e+3" |
!n |
Output as number | returns number |
!c |
Compact format | "1.23M" |
!c:preset |
Compact preset | !c:wan β "1.23δΈ" |
!t:preset |
Thousands preset | !t:eu β "1.234,50" |
!i:N |
Integer zero-padding | !i:3 β "005" |
~- |
Truncate (default) | |
~5 |
Round half up | |
~6 |
Banker's rounding | |
~+ |
Round up |
import { cadd, csub, cmul, cdiv } from "a-calc";
cadd(1, 2, 3)(); // "6"
cadd(10).sub(3).mul(2)(); // "14"
cadd(1000, 2000)("=2,"); // "3,000.00"import { add, sub, mul, div } from "a-calc";
add(0.1, 0.2); // 0.3 (number)
mul(3, 4, 5); // 60 (number)
// String output with r-prefix
import { radd, rmul } from "a-calc";
radd("0.1", "0.2"); // "0.3" (string)import { set_config, reset_config } from "a-calc";
set_config({ _error: 0 }); // Error returns 0 instead of "-"
set_config({ _fmt: "=2," }); // Global default format
set_config({ _compact_default: "wan" }); // Default compact preset
reset_config(); // Reset all| Library | 50,000 ops | 500,000 ops |
|---|---|---|
| a-calc | 423ms | 3650ms |
| [email protected] | 610ms | 5724ms |
| math-expression-evaluator | 701ms | 6764ms |
| [email protected] | 3791ms | 36948ms |
For complete API reference, advanced features (unit conversion, compute modes, format groups, etc.), visit: