Math.ceil不能使用负浮点数

时间:2014-10-13 07:43:07

标签: javascript

我正在尝试使用Math.ceil创建一个RoundUp函数,它可以正数处理,但不会对负数进行舍入 这是我正在尝试的

var value = -12.369754; --> output = -12
// make value = 12.369754; and out put will be 13
var decimalPoints = 0;

if (decimalPoints == 0) {
                value = Math.ceil(parseFloat(value));
            }
console.log(value);

这是小提琴http://jsfiddle.net/n7ecyr7h/

为什么这个功能? 我需要创建一个函数,在该函数中,用户将给出一个数字和小数点,以便对数字进行舍入。 RoundUp 函数将给定值舍入到给定的小数点数 例如,如果用户输入12.12445并希望roundUp to 3 decimal points,则输出将为12.125 这是一个包含2个小数点的必需输出表

**Input**              **output**

1.2369                   1.24

1.2869                   1.29

-1.1234                  -1.13

-1.17321                 -1.18

这里是原始JS代码http://jsfiddle.net/n7ecyr7h/1/

的更新小提琴

2 个答案:

答案 0 :(得分:2)

即使是负值,Math.ceil方法实际上也会进行舍入。值-12是最接近-12.369754的整数值。

您正在寻找的是远离零:

value = value >= 0 ? Math.ceil(value) : Math.floor(value);

编辑:

使用具有不同小数点数的那个:

// it seems that the value is actually a string
// judging from the parseFloat calls that you have
var value = '-12.369754';
var decimalPoints = 0;

// parse it once
value = parseFloat(value);

// calculate multiplier
var m = Math.pow(10, decimalPoints);

// round the value    
value = (value >= 0 ? Math.ceil(value * m) : Math.floor(value * m)) / m;

console.log(value);

演示:http://jsfiddle.net/Guffa/n7ecyr7h/3/

答案 1 :(得分:1)

Math.ceil(-1.1234)将为-1.12,因为在负-1.12> -1.1234。 我认为你在数学上误解了。

相关问题