我有一些价格在一页,是在小数点4位。有些产品的价格是小数点4位,但有些只有2位。
目前,我们的网站是设置在4小数位显示每一个产品,我必须使用javascript来削减那些不是小数点2位的产品的价格。
所以我有这样的价格..。
£0.1234
£1.1000
£10.9900
£100.0000
我有下面的javascript,它对小数点后的数字大于1的价格很好,但是在小数点之后只有0的价格上,它失败了.
$.each($("#mydiv"),function(){
var price = $(this).text().replace("£","");
var number = parseFloat(price);
var integerPart = number.toString().split(".")[0] == 0 ? 0: number.toString().split(".")[0].length;
var decimalPart = number.toString().split(".")[1].length;
if(decimalPart > 2){
$(this).text("£" + number.toPrecision(integerPart + decimalPart));
}else{
$(this).text("£" + number.toPrecision(integerPart + 2));
}
});它失败的是价格,如as 100.0000-我希望价格出现如下-没有四舍五入.
£0.1234
GB1.10
GB10.99
£100.00
发布于 2014-07-18 11:02:39
如果前面的字符是小数点,则只需使用regexp移除任何尾随零:
$('.myClass').text(function(_, t) {
return t.replace(/(\.\d\d)00$/, '$1');
});注意:您不能使用重复元素ID,所以您的$.each调用应该是模拟的。如果确实需要对多个字段进行标记,则使用类(而不是ID )标记它们。代码中的.text调用将自动处理多个元素。
如果您真的不能升级您的,请编辑jQuery:
$('.myClass').each(function() {
var $this = $(this);
var text = $this.text();
text = text.replace(/(\.\d\d)00$/, '$1');
$this.text(text);
});发布于 2014-07-18 11:24:19
除了Alnitak的答案之外,我强烈建议您将商店的商品价格存储为整数(在您的例子中可能是长整数),这样您就不必担心双倍或浮点数的不精确性。
因为有4位小数位,整数(或长数)不能表示便士,而是表示1/100便士。
示例:
Price on website | price in database
-------------------------------------------
£0.1234 | 1234
£1.10 | 11000
£10.99 | 109900
£100.00 | 1000000https://stackoverflow.com/questions/24823362
复制相似问题