gpt4 book ai didi

javascript - 如何在 crossfilter 中舍入 reduceSum 的值?

转载 作者:行者123 更新时间:2023-11-29 23:31:01 25 4
gpt4 key购买 nike

我正在使用 dc.js 制作 map ,crossfilter 函数 reduceSum() 引入了一些舍入错误。

简化示例:

group = dimension.group().reduceSum(function(e) { return 0.01; });

当记录数为 3221 时,group.all() 将包含一个值 32.21000000000216。它应该是 32.21(3221 乘以 0.01 的总和)。

你可以在这里看到我所说的效果:https://epistat.wiv-isp.be/(只需将鼠标悬停在 map 上即可看到很长的十进制数字)

如何舍入交叉过滤器组的值?

该组只有这些方法可用:

  • 全部
  • 处置
  • 订购
  • 自然顺序
  • 减少
  • 减少计数
  • 减少总和
  • 移除
  • 大小

你能改变组的值吗?
我正在考虑用循环来做,但我在文档中找不到任何用于更改组值的内容: https://github.com/square/crossfilter/wiki/API-Reference

最佳答案

我找到了一个解决方法,这不是我一直在寻找的真正答案,但它是迄今为止我找到的最好的答案:

我通过尽可能在数据中使用最大的数字(在维度和组之前)来获得最接近的 float (最接近实数)。(我将 incidencebigMultiplicator=99999999 相乘;根据我的测试,越大越好)

然后在 reduceSum 中除以那个大数:

group = dimension.group().reduceSum(function(e) { return e.incidence / bigMultiplicator; });

最后我将 dc.js 的标题显示中的数字四舍五入:

.title(function(d) {
return d.key + ' : ' + Math.round(d.value * 100)/100 ;
})

我希望它能帮助到其他人。

关于javascript - 如何在 crossfilter 中舍入 reduceSum 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47395694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com