用负下界修饰线性标度

Nicing a linear scale with a negative lower bound

本文关键字:线性      更新时间:2023-09-26
d3.scale.linear()
  .domain([-0.505, 1])
  .nice()
  .domain();

返回这个

[-0.6000000000000001, 1]

但我真正想要的是这个

[-0.6, 1]
编辑:

正如在注释中提到的,在"浮点数学是否坏了?"中解释了这个问题的原因。

这个问题是关于在d3环境中获得预期结果的最佳方法。也许最好的方法是简单的字符串格式化。但是,我想看看有没有人对这种特殊情况有新的解决方案。

尝试转换为具有固定精度的字符串并返回到数字:

d3.scale.linear()
  .domain([-0.505, 1])
  .nice()
  .domain()
  .map(function(val) { return +val.toFixed(10); });

这个收益率

[-0.6, 1]