【发布时间】:2018-06-01 13:50:06
【问题描述】:
我想像这样对数字进行四舍五入:
Value Expected
0,523% 1%
2,235% 2,5%
-0,081% -0,5%
-1,081% -1,5%
如何使用 JavaScript 做到这一点?
解决方案:
static round (num) {
const abs = Math.abs(num);
const sign = num < 0 ? -1 : 1;
return sign * (abs % 1 > 0.5 ? Math.ceil(abs) : Math.floor(abs) + 0.5) }
}
我使用 Excel =round(Value/Granularity)*Granularity 但我在 JavaScript 中尝试过它不起作用。
static calc(num){
const granularitiy = 0.00005;
let calc = Math.round((num / granularitiy)) * granularitiy;
return calc;
}
我的粒度值是0.00005;
【问题讨论】:
-
在这里展示你的作品
-
您想将正数 up 舍入到最接近的 0.5,而将负数 down 舍入到最接近的 0.5...?
-
你的意思是,四舍五入到离零最近的 0.5 倍数?
-
这似乎是一种糟糕的舍入方式。你最终会在
0.001和-0.001之间产生巨大的差距。一个将一直向上舍入到0.5,另一个向下舍入到-0.5。这是一个巨大的差距。 -
这个答案使用 .5 而不是 3:stackoverflow.com/questions/3254047/…
标签: javascript typescript