首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修剪尾随零点不完全工作

问修剪尾随零点不完全工作
EN

Stack Overflow用户
提问于 2014-07-18 10:55:06
回答 2查看 573关注 0票数 0

我有一些价格在一页,是在小数点4位。有些产品的价格是小数点4位,但有些只有2位。

目前,我们的网站是设置在4小数位显示每一个产品,我必须使用javascript来削减那些不是小数点2位的产品的价格。

所以我有这样的价格..。

£0.1234

£1.1000

£10.9900

£100.0000

我有下面的javascript,它对小数点后的数字大于1的价格很好,但是在小数点之后只有0的价格上,它失败了.

代码语言:javascript
复制
$.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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-18 11:02:39

如果前面的字符是小数点,则只需使用regexp移除任何尾随零:

代码语言:javascript
复制
$('.myClass').text(function(_, t) {
    return t.replace(/(\.\d\d)00$/, '$1');
});

注意:您不能使用重复元素ID,所以您的$.each调用应该是模拟的。如果确实需要对多个字段进行标记,则使用类(而不是ID )标记它们。代码中的.text调用将自动处理多个元素。

如果您真的不能升级您的,请编辑jQuery:

代码语言:javascript
复制
$('.myClass').each(function() {
    var $this = $(this);
    var text = $this.text();
    text = text.replace(/(\.\d\d)00$/, '$1');
    $this.text(text);
});
票数 1
EN

Stack Overflow用户

发布于 2014-07-18 11:24:19

除了Alnitak的答案之外,我强烈建议您将商店的商品价格存储为整数(在您的例子中可能是长整数),这样您就不必担心双倍或浮点数的不精确性。

因为有4位小数位,整数(或长数)不能表示便士,而是表示1/100便士。

示例:

代码语言:javascript
复制
Price on website   |    price in database
-------------------------------------------
£0.1234            |     1234
£1.10              |    11000
£10.99             |   109900
£100.00            |  1000000
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24823362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档