我正在尝试使用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/
的更新小提琴答案 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);
答案 1 :(得分:1)
Math.ceil(-1.1234)将为-1.12,因为在负-1.12> -1.1234。 我认为你在数学上误解了。