Skip to content

数字相加

🌐 Adding numbers

添加全精度浮点数。

🌐 Add floating point numbers with full precision.

new Adder()

js
const adder = new d3.Adder();

示例 · 来源 · 创建一个初始值为0的新加法器。

adder.add(number)

js
adder.add(42)

将指定的数字加到加法器的当前值上并返回该加法器。

🌐 Adds the specified number to the adder’s current value and returns the adder.

adder.valueOf()

js
adder.valueOf() // 42

返回加法器当前值的 IEEE 754 双精度表示。最常用作简写表示 +adder,或在强制转换时作为 Number(adder)

🌐 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)

js
d3.fsum([0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]) // 1

示例 · 来源 · 返回给定 values 的全精度总和。虽然速度较慢,但在需要更高精度的情况下,d3.fsum 可以替代 d3.sum

js
d3.fsum(penguins, (d) => d.body_mass_g) // 1437000

如果指定了访问器,则会对输入的中的每个元素调用给定的函数,同时传入元素 d、索引 i 和数组 data 作为三个参数;然后将返回的值相加。

🌐 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)

js
d3.fcumsum([1, 1e-14, -1]) // [1, 1.00000000000001, 1e-14]

示例 · 来源 · 返回给定 values 的全精度累加和,结果为 Float64Array。虽然速度较慢,但在需要更高精度时,d3.fcumsum 可以替代 d3.cumsum

js
d3.fcumsum(penguins, (d) => d.body_mass_g) // [3750, 7550, 10800, 10800, 14250, …]

如果指定了访问器,则会对输入的中的每个元素调用给定的函数,同时传入元素 d、索引 i 和数组 data 作为三个参数;然后将返回的值相加。

🌐 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.