删除javascript中的decimal

remove decimal in javascript

本文关键字:decimal 中的 javascript 删除      更新时间:2024-05-25

我想从javascript中的数字中删除小数:类似这样的东西:

12 => 12
12.00 => 1200
12.12 => 1212
12.12.12 => error: please enter valid number.

我不能使用Math.round(number)。因为,这会给我不同的结果。我怎样才能做到这一点?谢谢

处理前三个示例的最简单方法是:

function removeDecimal(num) {
    return parseInt(num.toString().replace(".", ""), 10);
}

这假设论点已经是一个数字,在这种情况下,你的第二个和第四个例子是不可能的。

如果不是这样的话,你需要计算字符串中的点数,比如(这个问题中的技巧):

(str.match(/'./g) || []).length

将两者结合并投掷,您可以:

function removeDecimal(num) {
    if ((num.toString().match(/'./g) || []).length > 1) throw new Error("Too many periods!");
    return parseInt(num.toString().replace(".", ""), 10);
}

这适用于大多数数字,但对于特别大或精确的值可能会遇到舍入误差(例如,removeDecimal("1398080348.12341234")将返回139808034812341230)。

如果你知道输入总是一个数字,并且你想变得非常棘手,你也可以做一些事情,比如:

function removeDecimal(num) {
    var numStr = num.toString();
    if (numStr.indexOf(".") === -1) return num;
    return num * Math.pow(10, numStr.length - numStr.indexOf(".") - 1);
}

您可以使用replace方法删除字符串中的第一个句点,然后检查是否还有另一个句点:

str = str.replace('.', '');
if (str.indexOf('.') != -1) {
  // invalid input
}

演示:

function reformat(str) {
  str = str.replace('.', '');
  if (str.indexOf('.') != -1) {
    return "invalid input";
  }
  return str;
}
// show in Stackoverflow snippet
function show(str) {
  document.write(str + '<br>');
}
show(reformat("12"));
show(reformat("12.00"));
show(reformat("12.12"));
show(reformat("12.12.12"));

number = number.replace(".", "");怎么样?