用负下限划分线性刻度

时间:2015-07-07 01:18:29

标签: javascript d3.js

d3.scale.linear()
  .domain([-0.505, 1])
  .nice()
  .domain();

返回此

[-0.6000000000000001, 1]

但我真正想要的是这个

[-0.6, 1]

编辑:

如评论中所述,Is floating point math broken?中解释了这一原因。

这个问题是关于在d3环境中获得所需结果的最佳方法。也许最好的方法就是字符串格式化。但是,我想看看是否有人对这个特殊情况有一个新颖的解决方案。

1 个答案:

答案 0 :(得分:0)

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

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

这会产生

[-0.6, 1]