带小数的固定长度数

时间:2016-08-15 03:41:51

标签: javascript jquery

我有一些可变长度,看起来像这样:

48.4532

我想将其转换为十进制前的4位数和2位小数,因此上面的数字应为:

0048.45

我也不想显示小数,除非它们是必要的,所以:

48

应该成为:

0048

我能够获得固定的长度,但是只有在必要时我才能显示小数(我不想在结尾显示两个0)。

这就是我得到固定长度的方式:

trackPartLength = ("0000" + trackPartLength.toString()).slice(-4); // Convert to fixed length

如果需要,我如何添加2个小数点?

编辑:我也刚刚意识到,如果数字上面的代码有小数,它会将小数点移动4个点以引起其他一些问题,所以我不确定我的初始方法是不是很好。我正在尝试修改固定长度函数的可变固定前缀和小数长度。

1 个答案:

答案 0 :(得分:1)

这应该有效:

trackPartLength = ("0000" + trackPartLength.toFixed(2)).slice(-7).replace( /\.00$/, '' );

使用toFixed获取两个小数点,零填充,然后删除任何尾随.00。例子:

48.4532     -> 0048.45
48          -> 0048
6.213       -> 0006.21
12345       -> 2345
1234.56789  -> 1234.57

如果数字在小数点之前可以有超过四位数,如12345示例中所示,您可能希望将零填充和切片条件化,这样就不会从大数字中删除前导数字。这可以这样做:

var tmp = trackPartLength.toFixed(2);
trackPartLength = (tmp.length >= 7 ? tmp : ('0000' + tmp).slice(-7)).replace( /\.00$/, '' );