我想知道如果这个代码可以被修改,使得它会使“4.5”和“4.5”(或者任何数量只有具有十分之一分别的地方)为4.50(或4.50)......而不是45添加百分之一的地方为一个数字,可以是逗号或句号分隔
我想我需要测试“来源”,看它是否有足够快的格式为“X [,] X”(数字,逗号或句点,数字),但无法成功完成。我一直在使用“toFixed”尝试,但那个食堂的事情了,如果它是4.500或东西(这需要渲染为4500,而不是4.50!)
任何帮助将非常感激。谢谢!
function parse(source) {
var sep = source.charAt(source.length - 3);
switch (sep) {
case '.':
case ',':
var parts = source.split(sep);
var norm = parts[0].replace(/(\.|,|\s)/g, '') + '.' + parts[1];
break;
default:
var norm = source.replace(/(\.|,|\s)/g, '');
}
return Math.round(Number(norm));
}
所以我想通了,识别正确的模式正则表达式:/^\d{1}[.,]\d{1}$/(注意这里没有显示的期限之前直到斜线括号!)
我将它分为以下几个小功能,我想只是钉在零或离开变量里面。但由于某些原因,它现在在崩溃那里我加入了零的部分...
function addZeros(number) {
var s = number;
if (s.match(/^\d{1}[\.,]\d{1}$/)) { //should only get here on "X,X" or "X.X" cases
alert(s); //makes it to here, displays only this alert
s = s.toFixed(2); //wtf is wrong with this?!!
alert(s); //does NOT make it to here.
return s;
}
else {
alert('All good in the hood.');
return s;
}
}
为什么4.500应该显示为4500而不是4.50? – showdev
@showdev几个国家使用'.'而不是'''作为[千位分隔符](http://docs.oracle.com/cd/E19455-01/806-0169/overview-9/index.html)。 –
因为在欧洲的一些国家,逗号和小数点被交换。所以“4.500”=“4500”而不是“4.50”,就像它在美国一样。所以功能很好,但是它将“4.5”和“4.5”混淆为“45”而不是“4.50” – user1149499