Android开发之播放量点赞量打赏量收藏量单位格式化工具类
生活随笔
收集整理的這篇文章主要介紹了
Android开发之播放量点赞量打赏量收藏量单位格式化工具类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
直接上工具類Kotlin版本
package com.noboauto.module_base.utilimport java.math.BigDecimal/*** @author xiayiye5* @date 2021/10/29 9:01* 數字格式化顯示* 小于萬默認顯示 大于萬以1.7萬方式顯示最大是9999.9萬* 大于億以1.1億方式顯示最大沒有限制都是億單位* 示例如下:* println("打印格式化:" + NumberUtils.formatNum(1522255226565))* println("打印格式化:" + NumberUtils.formatNum(15500))* println("打印格式化:" + NumberUtils.formatNum(19500))* println("打印格式化:" + NumberUtils.formatNum(1522259000000))* println("打印格式化:" + NumberUtils.formatNum(1522295000000))* println("打印格式化:" + NumberUtils.formatNum(16400))* println("打印格式化:" + NumberUtils.formatNum(16700))* println("打印格式化:" + NumberUtils.formatNum(19500))* * 格式化結果如下:* 打印格式化:15222.6億* 打印格式化:1.6萬* 打印格式化:2萬* 打印格式化:15222.6億* 打印格式化:15223億* 打印格式化:1.6萬* 打印格式化:1.7萬* 打印格式化:2萬*******/ object NumberUtils {/*** 默認不格式化單位 "千"*/fun formatNum(num: Long): String {return formatNum(num, false)}/*** @param num 格式化的數字* @param isBool 是否格式化千,為true,并且num大于999就顯示999+,小于等于999就正常顯示* @return 返回結果*/fun formatNum(num: Long, isBool: Boolean?): String {var kBool = isBoolval sb = StringBuffer()if (kBool == null) {kBool = false}val b0 = BigDecimal("1000")val b1 = BigDecimal("10000")val b2 = BigDecimal("100000000")val b3 = BigDecimal(num)var formatNumStr = ""var quantity = ""// 以千為單位處理 if (kBool) {return if (b3.compareTo(b0) == 0 || b3.compareTo(b0) == 1) {"999+"} else num.toString()}// 以萬為單位處理 if (b3.compareTo(b1) == -1) {sb.append(b3.toString())} else if (b3.compareTo(b1) == 0 && b3.compareTo(b1) == 1|| b3.compareTo(b2) == -1) {formatNumStr = b3.divide(b1).setScale(1, BigDecimal.ROUND_HALF_UP).toString()quantity = "萬"} else if (b3.compareTo(b2) == 0 || b3.compareTo(b2) == 1) {formatNumStr = b3.divide(b2).setScale(1, BigDecimal.ROUND_HALF_UP).toString()quantity = "億"}if ("" != formatNumStr) {var i = formatNumStr.indexOf(".")if (i == -1) {sb.append(formatNumStr).append(quantity)} else {i += 1val v = formatNumStr.substring(i, i + 1)if (v != "0") {sb.append(formatNumStr.substring(0, i + 1)).append(quantity)} else {sb.append(formatNumStr.substring(0, i - 1)).append(quantity)}}}return if (sb.isEmpty()) {"0"} else sb.toString()} }我們再看下Java版本:Java版本未測試,請自行測試
package com.demo;import java.math.BigDecimal;public class NumberJavaUtils {/*** 默認不格式化單位 "千"*/public String formatNum(Long num) {return formatNum(num, false);}/*** @param num 格式化的數字* @param isBool 是否格式化千,為true,并且num大于999就顯示999+,小于等于999就正常顯示* @return 返回結果*/public String formatNum(Long num, Boolean isBool) {boolean kBool = isBool;StringBuffer sb = new StringBuffer();BigDecimal b0 = new BigDecimal("1000");BigDecimal b1 = new BigDecimal("10000");BigDecimal b2 = new BigDecimal("100000000");BigDecimal b3 = new BigDecimal(num);String formatNumStr = "";String quantity = "";// 以千為單位處理 if (kBool) {if (b3.compareTo(b0) == 0 || b3.compareTo(b0) == 1) {return "999+";} else {return num.toString();}}// 以萬為單位處理 if (b3.compareTo(b1) < 0) {sb.append(b3.toString());} else if (b3.compareTo(b1) == 0 && b3.compareTo(b1) > 0|| b3.compareTo(b2) < 0) {formatNumStr = b3.divide(b1).setScale(1, BigDecimal.ROUND_HALF_UP).toString();quantity = "萬";} else if (b3.compareTo(b2) == 0 || b3.compareTo(b2) == 1) {formatNumStr = b3.divide(b2).setScale(1, BigDecimal.ROUND_HALF_UP).toString();quantity = "億";}if (!"".equals(formatNumStr)) {int i = formatNumStr.indexOf(".");if (i == -1) {sb.append(formatNumStr).append(quantity);} else {i += 1;String v = formatNumStr.substring(i, i + 1);if (!v.equals("0")) {sb.append(formatNumStr.substring(0, i + 1)).append(quantity);} else {sb.append(formatNumStr.substring(0, i - 1)).append(quantity);}}}if (sb.length() == 0) {return "0";} else {return sb.toString();}} }kotlin版本2
package com.noboauto.module_base.utilimport java.math.BigDecimal/*** @author xiayiye5* @date 2021/10/29 9:01* 數字格式化顯示* 小于萬默認顯示 大于萬以1.7萬方式顯示最大是9999.9萬* 大于億以1.1億方式顯示最大沒有限制都是億單位*/ object NumberUtils {/*** 默認不格式化單位 "千"*/fun formatNum(num: Long): String {return formatNum(num, false)}/*** @param num 格式化的數字* @param isFormatThousand 是否格式化千,為true,并且num大于999就顯示999+,小于等于999就正常顯示* @return 返回結果*/fun formatNum(num: Long, isFormatThousand: Boolean?): String {var isOutweighThousand = isFormatThousandval sb = StringBuffer()if (isOutweighThousand == null) {isOutweighThousand = false}val thousand = BigDecimal("1000")val tenThousand = BigDecimal("10000")val unit = BigDecimal(num)var formatNumStr = ""var quantity = ""// 以千為單位處理 if (isOutweighThousand) {return if (unit.compareTo(thousand) == 0 || unit.compareTo(thousand) == 1) {"999+"} else num.toString()}// 以萬為單位處理 if (unit.compareTo(tenThousand) == -1) {sb.append(unit.toString())} else {var scale = unit.divide(tenThousand).setScale(1, BigDecimal.ROUND_HALF_UP)if (scale.compareTo(tenThousand) == 0 || scale.compareTo(tenThousand) == 1) {scale = scale.divide(tenThousand).setScale(1, BigDecimal.ROUND_HALF_UP)quantity = "億"} else {quantity = "萬"}formatNumStr = scale.toString()}if ("" != formatNumStr) {var i = formatNumStr.indexOf(".")if (i == -1) {sb.append(formatNumStr).append(quantity)} else {i += 1val v = formatNumStr.substring(i, i + 1)if (v != "0") {sb.append(formatNumStr.substring(0, i + 1)).append(quantity)} else {sb.append(formatNumStr.substring(0, i - 1)).append(quantity)}}}return if (sb.isEmpty()) {"0"} else sb.toString()} }總結
以上是生活随笔為你收集整理的Android开发之播放量点赞量打赏量收藏量单位格式化工具类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 雷霆战机官网最新活动 雷霆战机活动礼包装
- 下一篇: 删除文件时显示被另一程序打开怎么解决?