货币精度问题

只有 5 分的货币

要求: 举个例子,价格区间为 [1.00, 1.02] 计算结果为 1.00;
[1.03, 1.07] 计算结果为 1.05;
[1.08, 1.09] 计算结果为 1.10

请问有什么好的方法实现?

阅读 2.3k
2 个回答

乘20四舍五入

var a =[1,1.02,1.03,1.07,1.08,1.09]

a.map(elem=>{
        return Math.round(elem*20)/20
    })

//[1, 1, 1.05, 1.05, 1.1, 1.1]

也就是判断最后一位小数呗。。

function format(price) {
    let priceStr = price.toString();
    let lastNumPrice = priceStr[priceStr.length-1];
    let int = priceStr.split('.')[0]
    let decimal = priceStr.split('.')[1][0] + '0'
    let tmp = 0;
    if (lastNumPrice >3 && lastNumPrice <7) {
        tmp = 5;
    }else if(lastNumPrice >8 && lastNumPrice <9) {
        tmp = 10;
    }
    let decimalComputed = String(Number(decimal) + tmp)
    let res =  Number(int+'.'+decimalComputed).toFixed(2)
    return Number(res)
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏