在javascript中删除小数

时间:2015-02-25 18:07:31

标签: javascript jquery

我想从javascript中的数字中删除小数: 像这样:

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

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

3 个答案:

答案 0 :(得分:5)

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

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

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

如果情况并非如此,您需要使用(trick taken from this question)之类的内容计算字符串中的点数:

(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);
}

答案 1 :(得分:3)

您可以使用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"));

答案 2 :(得分:1)

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