处理点赞和评论的数量时,经常有需求要将过长的数据进行缩减,比如:1945格式化为1.9k,19450格式化为1.9w

功能主要会用到两个函数:

1、判断后端返回的数据是否是数字

public static boolean isNumeric(String str) {for (int i = str.length(); --i >= 0; ) {if (!Character.isDigit(str.charAt(i))) {return false;}}return true;}

这个功能有其他的实现方法。

2、将数据进行格式化

public static String formatBigNum(String num) {if (StringUtils.isEmpty(num)) {// 数据为空直接返回0return "0";}try {StringBuffer sb = new StringBuffer();if (!StringUtils.isNumeric(num)) {// 如果数据不是数字则直接返回0return "0";}BigDecimal b0 = new BigDecimal("1000");BigDecimal b1 = new BigDecimal("10000");BigDecimal b2 = new BigDecimal("100000000");BigDecimal b3 = new BigDecimal(num);String formatedNum = "";//输出结果String unit = "";//单位if (b3.compareTo(b0) == -1) {sb.append(b3.toString());} else if ((b3.compareTo(b0) == 0 || b3.compareTo(b0) == 1)|| b3.compareTo(b1) == -1) {formatedNum = b3.divide(b0).toString();unit = "k";} else if ((b3.compareTo(b1) == 0 && b3.compareTo(b1) == 1)|| b3.compareTo(b2) == -1) {formatedNum = b3.divide(b1).toString();unit = "w";} else if (b3.compareTo(b2) == 0 || b3.compareTo(b2) == 1) {formatedNum = b3.divide(b2).toString();unit = "亿";}if (!"".equals(formatedNum)) {int i = formatedNum.indexOf(".");if (i == -1) {sb.append(formatedNum).append(unit);} else {i = i + 1;String v = formatedNum.substring(i, i + 1);if (!v.equals("0")) {sb.append(formatedNum.substring(0, i + 1)).append(unit);} else {sb.append(formatedNum.substring(0, i - 1)).append(unit);}}}if (sb.length() == 0)return "0";return sb.toString();} catch (Exception e) {e.printStackTrace();return num;}}

【Android】关于大数字格式化为千或万等(例如1945格式化为1.9k)相关推荐

  1. js 大数字单位处理 千、万、千万、亿....

    private setText(nxtjb,jb_txt){ let fr = 1000; let ad = 1; let num = 3;//几位数 let fm = 1;//单位表示1000 10 ...

  2. js大数值单位转换千、万、亿单位,复制即可用

    最近呢在爬微博热门但是爬出来的热度是显示全部数字,显得特别难看 于是我就做了一个小的封装整体代码如下 /*** 数字格式化*/ module.exports = {/*** 数字格式化:万.亿单位* ...

  3. 格式金额,默认保留两位小数,并格式化为千分位

    项目场景: 商城类项目中大多需要格式化金额,后缀保留两位小数,并且千元之后加上千分位符号 例子:32,131.00 这种金额,贴上js代码,可以新建一个js引用就行 解决方案: //格式金额,默认保留 ...

  4. HTML数字项目标签千位分隔符,请使用千位分隔符(逗号)表示web网页中的大数字

    一.移动端大数值会默认当作电话号码 在手机等移动设备上,对于超过一定个数的数值,系统默认会当做电话号码处理,而不是一个数字 按照中文用户的使用习惯,有时候个数很多的连续数字其实真的就是一个数字,自动变 ...

  5. js和 ts 将大数字金额转换成带单位的数字金额,万,千万,亿,格式化金额数字,格式化成带单位的金额,附ts版代码

    js将大数字金额转换成带单位的数字金额,万,千万,亿, 第一个参数是在转换的数字, 第二个参数是返回的格式 不传第二个参数,返回数字和单位分开的,数组格式,传第二个参数后,返回数组和单位的字符串,这样 ...

  6. word文档怎么给数字加千分符_Word中如何将文档中的金额数值设置为财务数字中的千分位格式...

    Word中如何将文档中的金额数值设置为财务数字中的千分位格式 时间:2015-06-10   作者:snow   来源:互联网 如图6‑19所示为某公司给省商务厅上报的2013年农产品现代流通综合试点 ...

  7. Excel打开CSV格式,大数字乱码情况

    我们在打开CSV保存的身份证号,ID等大数字时,经常会出现末尾几位变为0的情况. 解决方案: 1.使用导入的方式打开而不是使用打开的方式. 2.针对长数字格式导入过程中选择文本格式 步骤: 1.新建E ...

  8. 前端大数字使用千分位(逗号)分隔

    方法1:使用正则表达式: /*** 大数字转换 将数字分段显示,每三位用逗号隔开* @param value 数字值*/export function formatNumber (value: str ...

  9. Android知识点大扫描

    Android知识点大扫描 什么是 3G 3G,全称为3rd Generation,中文含义就是指第三代数字通信. 所谓3G,是指将无线通信与国际互联网等多媒体通信结合的新一代移动通信系统. 3G只是 ...

最新文章

  1. java 字符处理_Java字符串处理实用代码
  2. 【学习笔记】线性代数全家桶(在编程竞赛中的应用)
  3. 跨境出海,Tik Tok商业化营销推广分享
  4. Flutter:使用 CustomClipper 绘制 N 角星
  5. Cocos Creator导出场景和预制的问题
  6. Spring 4中@ControllerAdvice的改进
  7. 1007. Maximum Subsequence Sum (25)
  8. php动态获取函数参数
  9. C语言 判断两个字符串大小相等关系
  10. 如何在MyEclipse中建立一个代理服务器
  11. 推荐几个超会整活儿的Go公众号
  12. goto语句_C语言goto语句
  13. Excel数据分析实用小技巧【过坑】
  14. 录屏---EV录屏软件windows下使用说明
  15. EXCEL工资条短信如何发送?
  16. Android一行代码去掉百度导航的底部工具箱菜单
  17. 饥荒控制台输入没用_饥荒控制台怎么开启 饥荒控制台怎么用
  18. Unity3D Linear和Gamma渲染
  19. 这些数据合并的神操作,你掌握几个?
  20. NO.12【婳骨】の张三-打工人之路

热门文章

  1. jQuery—弹窗广告
  2. 雷达图人格php源码,061 实例15-霍兰德人格分析雷达图
  3. MATLAB之——Kronecker积
  4. 中鑫优配热点前瞻:国防军工+数据安全+燃料电池+煤炭
  5. 遥感应用发展观察(更新)
  6. 过压过流保护芯片完整篇
  7. 一个不错的技术面试官是怎么样的?
  8. ibm服务器进去阵列卡状态,IBM阵列卡介绍和服务器对阵列卡的支持情况
  9. Python之建模数值逼近篇–最小二乘拟合
  10. python解椭圆方程的例题_如何用python从3个点求椭圆方程