我想从javascript中的数字中删除小数: 像这样:
12 => 12
12.00 => 1200
12.12 => 1212
12.12.12 => error: please enter valid number.
我无法使用Math.round(number)
。因为,它会给我不同的结果。我怎样才能做到这一点?感谢。
答案 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(".", "");
怎么样?