d3/d3-array

can d3-array also support BigInt numbers?

tx0c opened this issue · 2 comments

some like d3.ascending d3.descending have no problems, some are not:

const bigints = [ 1n, 2n, 3n, -300n ];

bigints.sort(d3.descending); // okay
d3.sum(bigints); // error
file:///path/to/node_modules/d3-array/src/sum.js:5
      if (value = +value) {
                  ^

TypeError: Cannot convert a BigInt value to a number
    at Module.sum (file:///path/to/tmp/node_modules/d3-array/src/sum.js:5:19)
    at file:///path/to/tmp/xxx.mjs:67:6
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

Node.js v21.2.0
Fil commented

try d3.sum(bigints, Number)?

In general, no. We’d need a d3.bigsum if we wanted to be accurate with respective to BigInt. You can coerce to Number as @Fil suggested if you don’t actually need an exact answer though.