【问题标题】:how to get percentage a day to more precision from javascript momentjs.asHours()?如何从 javascript momentjs.asHours() 中获得更精确的一天百分比?
【发布时间】:2018-10-18 13:27:56
【问题描述】:

我有这样的表:

百分比列的总和必须是 100%,但我得到的是 100.01%。

这是我的代码:

var hourSlow = $("#input-me-slow").val();
var slowTime = moment.duration(hourSlow).asHours();
// slow time return 2.1666666666666665

var hourIdle = $("#input-me-idle").val();
var idleTime = moment.duration(hourIdle).asHours()
// idle time return 1

var hourEco = $("#input-me-eco").val();
var ecoTime = moment.duration(hourEco).asHours();
// ecoTime return 20.166666666666668

var hourSpeed = $("#input-me-speed").val();
var speedTime = moment.duration(hourSpeed).asHours();
// speedTime return 0.6666666666666666

var fTime = "24:00"
var dfTime = moment.duration(fTime).asHours();
// dfTime return 24

var totalTime = dfTime-speedTime-ecoTime-slowTime-idleTime;
// totalTime return -2.220446049250313e-15


// Here for display it to table, the problem is here
var fPercent = toHour(fullTime); //return 2.78
var ePercent = toHour(ecoTime); //return 84.03
var sPercent = toHour(slowTime); //return 9.03
var iPercent = toHour(idleTime); //return 4.17
$("#me_fullpercen").text(addCommas(fPercent));
$("#me_ecopercen").text(addCommas(ePercent));
$("#me_slowpercen").text(addCommas(sPercent));
$("#me_idlepercen").text(addCommas(iPercent));

// here the function of toHour (I dont know maybe the problem is here)
function toHour(num) {
    var result = (num / 24) * 100;
    return result ;
}

我宁愿不将百分比四舍五入到 100%,因为那样会不太精确。

我怎样才能使我的百分比变为 100% 而不是 100.01%?

【问题讨论】:

    标签: javascript jquery html ajax momentjs


    【解决方案1】:

    这是一个常见问题,无论您尝试多么精确,计算机在某些时候都需要使用重复小数对数字进行四舍五入。以下是一些处理它的帖子:

    在这些帖子中,您可以阅读到许多复杂的方法来非常接近 100%,但基本上没有正确的方法来做到这一点 - 当一切都归结起来时,它仍然是一个估计 - 并不完全准确,因为我们'正在处理不精确的数字。这就是野兽的本性。

    您的程序会以错误的方式对数字进行四舍五入,因为它是一台计算机,而且它并不智能。

    根据您的应用程序,您可能需要花时间阅读如何执行这些复杂的方法,也许您会非常接近。

    添加脚注

    无论您选择何种路径,您最终都可能会添加一个脚注来解释这个问题。像这样的:

    *由于四舍五入,这些值加起来可能不是 100%。

    【讨论】:

    • 感谢您回复我。是的,我已经读过,我想,我会实现一些想法:如果逗号后的小数低于 0.05,我可能会四舍五入。例如:10.396,我四舍五入到 10.38..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 2021-10-03
    相关资源
    最近更新 更多