js:金额显示转换—分转元

举报
彭世瑜 发表于 2022/06/15 00:13:56 2022/06/15
【摘要】 需求: 数据库里边存储的金额采用精确到分 的整数存储,原因是浮点数精度会丢失用户界面需要转换为以元 为单位的数值显示需要做分到元的转换,需要省略小数部分尾部的0,例如:9.00 只显示 9当然从高考数学...

需求:

  • 数据库里边存储的金额采用精确到 的整数存储,原因是浮点数精度会丢失
  • 用户界面需要转换为以 为单位的数值显示
  • 需要做分到元的转换,需要省略小数部分尾部的0,例如:9.00 只显示 9
  • 当然从高考数学严谨的角度看,这个需求是不合理的,保留小数点表示的数值的精确度,当然battle不过产品就只能按人家的需求来。

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

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

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

方法实现

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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

测试

// 元: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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。

原文链接:pengshiyu.blog.csdn.net/article/details/125274306

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。