如何格式化浮点数,最多可保留“ n”个小数位而不会尾随零

时间:2019-05-21 02:07:11

标签: javascript

如何在JavaScript中将数字格式化,例如将c#设置为0。####吗?

我使用函数.toFixed(4),但格式为0.0000

var x = a / b;
console.log(x.toFixed(4));

我要这样格式化...

1.0000 -> 1

1.2000 -> 1.2

1.2300 -> 1.23

1.2340 -> 1.234

1.2345 -> 1.2345

1.23456... -> 1.2346

2 个答案:

答案 0 :(得分:3)

结合Number.prototype.toFixed()并进行少量RegExp的替换

console.log(x.toFixed(4).replace(/\.?0+$/, ''))

const nums = ['1.0000', '1.2000', '1.2300', '1.2340', '1.2345', '1.23456']

const rx = /\.?0+$/
nums.forEach(num => {
  console.info(num, ' -> ', parseFloat(num).toFixed(4).replace(rx, ''))
})

答案 1 :(得分:1)

  

toFixed()方法使用定点表示法格式化数字。

toFixed不会为您提供这种格式的结果,您可以使用正则表达式更改小数点后的值

let a = 4
let b = 3
let x = ( a / b ).toFixed(4)

console.log(x.replace(/\.(.*)$/g,(match,g1)=>{
  return `.${g1 ? '#'.repeat(g1.length) : ''}` 
}));

  

更新

let a = 4
let b = 3

let changedFormat = (a,b) => {
 return ( a / b ).toFixed(4).replace(/\.?0+$/g, '')    
}

console.log(changedFormat(a,b))
console.log(changedFormat(1,1))
console.log(changedFormat(6,4))