js精度丢失——金额转换、校验、元转分、分转元记录

本文介绍了在项目中处理金额转换的问题,包括元与分之间的转换,并提供了JavaScript实现的金额校验和转换函数。通过正则表达式进行金额格式校验,确保金额格式正确;同时提供分转元和元转分的函数,解决精度问题。这些函数适用于前端开发中的金额处理场景。
摘要由CSDN通过智能技术生成

之前做项目的的时候,在项目中频繁的接触到金额之间单位转换的问题,主要是用户输入的是元,请求服务器的时候需要的是元,有时候后台返回的是分,给用户展示需要转换成元,因为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

暂时场景只有这些,后期如果遇到其他场景再进行补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值