jquery - toFixed but not toFixed

3

使用如下所示的toFixed

var a=0.5, b=1, c=1.5;
console.log(a.toFixed(), b.toFixed(), c.toFixed());
// 0.5 1.0 1.5

然而,当它是一个整数时,我只想让它返回"1"。
帮忙!

2
https://dev59.com/NEnSa4cB1Zd3GeqPMUFk - Jason LeBrun
1
这个问题实际上与jQuery无关。toFixed是JavaScript内置的函数。 - greggreg
2
我打开这个页面希望看到莎士比亚。 - a paid nerd
3个回答

2
您可以使用正则表达式来删除末尾的.0(如果存在):
Number.prototype.safe_toFixed = function (x) {
    var that = this.toFixed(x);
    return that.replace(/\.0$/, '');
}

1
你知道你正在操作Number原型吗?那可能会影响页面上的其他脚本! - sdleihssirhc
@Cody 我认为这应该被标记,不管谁受到了侮辱 :) - Dr. belisarius
@belisarius:看,这正是我心中的问题。如果你只冒犯了自己,那真的算是“冒犯”吗?然后我的脑袋爆炸了,因为我一开始就试图理解它。 - Cody Gray
@Cody 哦,我明白了。你认为这是自杀应该还是不应该死刑的问题。我只是看到了一个标志。也许今天我的生物节律低于诗歌 :) - Dr. belisarius

1

这就是我做的,每次都能正常工作。

var x= Number(54.03).toFixed(1);

  if(Math.floor(x) == x) {
     x = Math.floor(x);
  }

alert( x );

我只是在比较这两种类型,看它们是否匹配。如果匹配,那么我知道可能有一个额外的零或者没有。无论哪种情况,我都可以简单地向上取整(ceil)或向下取整(floor),获取整数,而不会有令人讨厌的小数和尾随的零。


0
你可以使用 split() 函数和一个 if 条件:
    var digit = 1.2
    var ret = digit.toFixed(1);
    var intValue = ret.split('.');
    if(intValue[1] == 0){
      digit = intValue[0];
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接