需要帮助来舍入小数Javascript

时间:2015-09-21 14:15:27

标签: javascript numbers rounding

我试图整理2个数字并在之后添加它们。

var a = 12.24; var b = 12.27;

我希望它们可以舍入到12.5,所以当我添加这2个数字时,结果将是12.5 + 12.5 = 25

3 个答案:

答案 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; 但请注意两件事:

  1. 浮点运算可能仍会导致分数舍入的数字关闭。 (但请注意,半圆形数字可以浮点数精确表示为2的52次幂。)

  2. 您可以通过对数字求和然后舍入结果来实现结果。这将更具数字稳定性。

答案 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;
}