之前做项目的的时候,在项目中频繁的接触到金额之间单位转换的问题,主要是用户输入的是元,请求服务器的时候需要的是元,有时候后台返回的是分,给用户展示需要转换成元,因为js的精度问题,也吃了很大的亏,所以以这篇文章来记录总结一下,希望能够帮到你!
一.金额校验
export const regAmount = (amount:string):boolean => {
return /^[0-9]+(.[0-9]{1,2})?$/.test(amount)
}
测试:
regAmount('1') // true
regAmount('1.0') // true
regAmount('1.0') // true
regAmount('1.01') // true
regAmount('0.1') // true
regAmount('1.') // false
regAmount('.1') // false
regAmount('1.000') // false
二、金额转换
1.分转元
export const fenToYuan = (amount:string | number):string => {
return (Number(amount) / 100).toFixed(2)
}
测试:
fenToYuan('20') // 0.20
fenToYuan('9') // 0.09
fenToYuan('123') // 1.23
fenToYuan('0') // 0.00
2.元转分
export const yuanToFen = (amount:string | number):string => {
return Math.round(Number(amount) * 100).toString()
}
测试:
yuanToFen('0.02') // 2
yuanToFen('1.99') // 199
yuanToFen('2.3') // 230
yuanToFen('34') // 3400
yuanToFen('34704.70') // 3470470
yuanToFen('16627.40') // 1662740
暂时场景只有这些,后期如果遇到其他场景再进行补充