使用jsjs小数点保留2位四舍五入,值保留两位小数(两种情况)Html部分:
总计:¥{{totalMoney|numFilter}}
Js部分:(注意toFixed方法只能用于数值数据)//案例1:reserved…
大家好,我是建筑师,一个会写代码,会背诗的建筑师。今天讲讲js的使用和数值小数点后两位的处理(两种情况),希望可以帮助大家提高!!!
html部分:
合计:
{
{totalMoney | numFilter}}
只听到建筑师办公室传来建筑师的声音:
红豆难看,眼里满是相思泪。谁将向上或向下匹配?
Js部分:(注意toFixed方法只能用于数值数据)
// 情况一:保留两位小数的过滤器,尾数四舍五入
此代码由Java架构师必看网-架构君整理filters: { numFilter (value) { let realVal = '' if (!isNaN(value) && value!== '') { // 截取当前数据到小数点后两位 realVal = parseFloat(value).toFixed(2) } else { realVal = '-' } return realVal
} }
// 情况2:保留两位小数的过滤器,尾数不四舍五入(这里有个问题js小数点保留2位四舍五入,当源数据的第三位小数是数字9,第四位会导致第三位结转,得到最终的数据仍然没有被截取 eg: 3.1798 截取两个比特会变成 3.18)
filters: {
numFilter (value) {
let realVal = ''
if (!isNaN(value) && value!== '') {
// 截取当前数据到小数点后三位
let tempVal = parseFloat(value).toFixed(3)
realVal = tempVal.substring(0, tempVal.length - 1)
} else {
realVal = '-'
}
return realVal
}
}
// 案例2:优化成如下方式,封装成公共函数,使用后立即调用
此代码由Java架构师必看网-架构君整理filters: { numFilter (value) { return cutOutNum(value) } } ----- 将此函数封装在外部js中 ----- /**
* 对源数据截取decimals位小数,不进行四舍五入 * @param {*} num 源数据 * @param {*} decimals 保留的小数位数 */ export const cutOutNum = (num, decimals = 2) => { if (isNaN(num) || (!num && num !== 0)) { return '-' } function toNonExponential (_num) { var m = Number(_num).toExponential().match(/d(?:.(d*))?e([+-]d+)/) return Number(_num).toFixed(Math.max(0, (m[1] || '').length - m[2])) } // 为了兼容科学计数法的数字 num = toNonExponential(num) // 获取小数点的位置 + 1(不存在小数点的indexOf值为-1) const pointIndex = String(num).indexOf('.') + 1 // 获取小数点后的个数(需要保证有小数位) const pointCount = pointIndex ? String(num).length - pointIndex : 0 // 补零函数 function zeroFill (zeroNum, num) { for (let index = 0; index < zeroNum; index++) { num = `${num}0` }
return num } // 源数据为"整数"或者小数点后面小于decimals位的作补零处理 if (pointIndex === 0 || pointCount <= decimals) { let tempNumA = num // 区分"整数"和"小数"的补零 if (pointIndex === 0) { tempNumA = `${tempNumA}.` tempNumA = zeroFill(decimals - pointCount, tempNumA) } else { tempNumA = zeroFill(decimals - pointCount, tempNumA) } return String(tempNumA) } // 截取当前数据到小数点后decimals位 const Int = String(num).split('.')[0] const Decimal = String(num).split('.')[1].substring(0, decimals) const tempNumB = `${Int}.${Decimal}` // 需求:数据为0时,需要显示为0,而不是0.00... return Number(tempNumB) === 0 ? 0 : tempNumB }
我想你会喜欢:
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 欧资源网