Adding numbers
Add floating point numbers with full precision.
new Adder()
const adder = new d3.Adder();
Examples · Source · Creates a new adder with an initial value of 0.
adder.add(number)
adder.add(42)
Adds the specified number to the adder’s current value and returns the adder.
adder.valueOf()
adder.valueOf() // 42
Returns the IEEE 754 double-precision representation of the adder’s current value. Most useful as the short-hand notation +adder
, or when coercing as Number(adder)
.
fsum(values, accessor)
d3.fsum([0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]) // 1
Examples · Source · Returns a full-precision summation of the given values. Although slower, d3.fsum can replace d3.sum wherever greater precision is needed.
d3.fsum(penguins, (d) => d.body_mass_g) // 1437000
If an accessor is specified, invokes the given function for each element in the input values, being passed the element d
, the index i
, and the array data
as three arguments; the returned values will then be added.
fcumsum(values, accessor)
d3.fcumsum([1, 1e-14, -1]) // [1, 1.00000000000001, 1e-14]
Examples · Source · Returns a full-precision cumulative sum of the given values as a Float64Array. Although slower, d3.fcumsum can replace d3.cumsum when greater precision is needed.
d3.fcumsum(penguins, (d) => d.body_mass_g) // [3750, 7550, 10800, 10800, 14250, …]
If an accessor is specified, invokes the given function for each element in the input values, being passed the element d
, the index i
, and the array data
as three arguments; the returned values will then be added.