js:金额显示转换 分转元 去除尾部的0

简介: js:金额显示转换 分转元 去除尾部的0

需求:


数据库里边存储的金额采用精确到分 的整数存储,原因是浮点数精度会丢失

用户界面需要转换为以元 为单位的数值显示

需要做分到元的转换,需要省略小数部分尾部的0,例如:9.00 只显示 9

当然从高考数学严谨的角度看,这个需求是不合理的,保留小数点表示的数值的精确度,当然battle不过产品就只能按人家的需求来。

刚开始,思路的是通过整除10取余的方式判断尾部是否有小数,再进行转换,处理起来比较繁琐;


后来,又发现可以使用lodash.trimEnd方法去除尾部的.0,发现整数的0也会被去掉,出现显示bug


最后,发现一个比较简单的方式,js浮点数转为字符串后,小数点部分会自动处理掉,就满足了需求了


方法实现


/**
 * 金额转换:分 转 元
 * @param {*} money
 * @returns
 */
function format_money(money) {
  return money * 0.01 + '';
}



测试


// 元:900 -> 9
console.log(format_money(900));
// 9
// 角:10 -> 0.1
console.log(format_money(10));
// 0.1
// 分:1 -> 0.01
console.log(format_money(1));
// 0.01


举一反三


如果需求是输入不是固定的小数位呢,也要求实现这样的效果,可以根据要求是否使用保留小数位,


总之,原理就是:浮点数转字符串


/**
 * 去除浮点数尾部的0
 * @param {Number} number
 * @returns
 */
function format_number(number){
  return number + '';
}
console.log(format_number(9.00000));
// 9
console.log(format_number(9.10000));
// 9.1
console.log(format_number(9.02000));
// 9.02
console.log(format_number(9.00300));
// 9.003
相关文章
|
3月前
|
JavaScript
js金额数字格式化
本文介绍了两种实现数字格式化的方法:字符串操作与正则表达式。首先,通过递归地在每三位数字间插入逗号来格式化整数。接着,扩展该功能以支持自定义小数位数及分隔符,适用于更广泛的场景。最后,展示了如何利用正则表达式简化上述过程,实现相同的功能。
|
4月前
|
JavaScript
js函数封装 —— 金额添加千分位分隔符
js函数封装 —— 金额添加千分位分隔符
60 2
|
4月前
|
JavaScript
js 金额格式化——显示千位分隔符
js 金额格式化——显示千位分隔符
63 0
|
JavaScript
JS将阿拉伯数字翻译成中文的大写数字、JS将数字转换为大写金额(整理)
JS将阿拉伯数字翻译成中文的大写数字、JS将数字转换为大写金额(整理)
|
JavaScript
js金额补充--2位小数0demo效果(整理)
js金额补充--2位小数0demo效果(整理)
|
JavaScript
js将金额小写转化为大写
js将金额小写转化为大写
|
JavaScript
js 将数值金额转换成大写金额
js 将数值金额转换成大写金额
71 0
|
JavaScript 前端开发
使用 JavaScript 根据消费金额和消费者是否为会员确定折扣,最终核算实际应该支付的金额
使用 JavaScript 根据消费金额和消费者是否为会员确定折扣,最终核算实际应该支付的金额
463 0
使用 JavaScript 根据消费金额和消费者是否为会员确定折扣,最终核算实际应该支付的金额
|
JavaScript 前端开发
JavaScript处理数字转化为大写金额
JavaScript处理数字转化为大写金额
471 0
|
JavaScript 前端开发
JS实现金额千分位化(十六)
JS实现金额千分位化(十六)
530 0