我有一些可变长度,看起来像这样:
48.4532
我想将其转换为十进制前的4位数和2位小数,因此上面的数字应为:
0048.45
我也不想显示小数,除非它们是必要的,所以:
48
应该成为:
0048
我能够获得固定的长度,但是只有在必要时我才能显示小数(我不想在结尾显示两个0)。
这就是我得到固定长度的方式:
trackPartLength = ("0000" + trackPartLength.toString()).slice(-4); // Convert to fixed length
如果需要,我如何添加2个小数点?
编辑:我也刚刚意识到,如果数字上面的代码有小数,它会将小数点移动4个点以引起其他一些问题,所以我不确定我的初始方法是不是很好。我正在尝试修改固定长度函数的可变固定前缀和小数长度。
答案 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$/, '' );