我试图整理2个数字并在之后添加它们。
var a = 12.24; var b = 12.27;
我希望它们可以舍入到12.5,所以当我添加这2个数字时,结果将是12.5 + 12.5 = 25
答案 0 :(得分:1)
与shown in this answer相同,使用不同的乘数/除数。在那个问题上,他们想要最接近的第10个;在这个问题中,你想要最近的一半。而不是
var num = 12.24;
num = Math.ceil(num * 10) / 10;
alert(num); // 12.24
......我们使用
var num = 12.24;
num = Math.ceil(num * 2) / 2;
alert(num); // 12.5
答案 1 :(得分:1)
要舍入到最近的一半,请使用
Math.round(a / 0.5) * 0.5;
要将向上舍入到最近的一半,请使用
Math.ceil(a / 0.5) * 0.5;
但请注意两件事:
浮点运算可能仍会导致分数舍入的数字关闭。 (但请注意,半圆形数字可以浮点数精确表示为2的52次幂。)
您可以通过对数字求和然后舍入结果来实现结果。这将更具数字稳定性。
答案 2 :(得分:1)
您可以尝试以下操作。这是Jsfiddle。
var a = 12.24;
console.log(roundHalf(a)); // 12.5
var b = 12.27;
console.log(roundHalf(b)); // 12.5
var result = roundHalf(a) + roundHalf(b);
console.log(result); // 25
function roundHalf(num){
return Math.ceil(num * 2) / 2;
}