sub

Subtracts another value from the receiver and returns the exact decimal difference.

import { Arith } from "@teakit/arith";

0.3 - 0.1; // 0.19999999999999998

const x = Arith.from("0.3");
const y = x.sub("0.1");
y.toString(); // "0.2"

// Chain subtraction with Arith values.
Arith.from("1").sub(x).sub(y).toString(); // "0.5"

// Use the (string, base) overload when the subtrahend is written in another base.
x.sub("0.6", 20).toString(); // "0"

// The receiver is not mutated.
x.toString(); // "0.3"

// Use the static helper when no method chain is needed.
Arith.sub("5", "2").toString(); // "3"

API Reference

Signature

sub(n: ArithValue): ArithInstance;
sub(n: string, base: number): ArithInstance;

Parameters

ParameterTypeRequiredNotes
nArithValueYesValue to convert to Arith before applying the operation.
basenumberNoOnly valid with the (string, base) overload. Must be an integer from 2 through ALPHABET.length.

Returns

Returns a new Arith instance. The receiver is not modified.

Throws

  • Throws if base is invalid.
  • Throws if the input value is invalid while STRICT is true.

Agent Contract

FieldValue
Kindinstance method and static helper
Canonical namesub
AliasesNone
Mutates receiverNo
ReturnsArithInstance
Accepts (string, base) overloadYes
Configuration dependenciesNone
Related methodsNone

Agent Notes

  • Do not use JavaScript arithmetic operators on Arith values.
  • Import with import { Arith } from "@teakit/arith"; default imports are unsupported.
  • Use Arith.from(...) to create values. Do not generate new Arith(...) or Arith(...).
  • Use string inputs for exact decimal values, especially money-like values.
  • Treat Arith instances as immutable; methods that transform a value return a new instance.
  • Do not mutate internal fields such as c, e, s, or _isArith.