package com.sw.dualscreen.utils import java.math.RoundingMode import java.text.DecimalFormat import kotlin.text.contains import kotlin.text.format import kotlin.text.replace /** * 去除小数点后无效零的工具类 * 功能示例: * 1230.00 => 1230 * 1230.10 => 1230.1 * 3.40 => 3.4 * 3.0 => 3 */ class RemoveZeroUtils { companion object { /** * 方法1:使用字符串格式化(最简单) * @param number 输入的double数值 * @return 去除无效零后的字符串 */ fun removeZeroByFormat(number: Double): String { return "%.10f".format(number) // 先格式化为固定小数位 .replace(Regex("0*$"), "") // 移除末尾的零 .replace(Regex("\\.$"), "") // 如果小数点后全为零,移除小数点 } /** * 方法2:使用DecimalFormat(推荐) * @param number 输入的double数值 * @return 去除无效零后的字符串 */ fun removeZeroByDecimalFormat(number: Double): String { val format = DecimalFormat("0.##########") format.roundingMode = RoundingMode.FLOOR return format.format(number) } /** * 方法3:使用正则表达式处理字符串 * @param number 输入的double数值 * @return 去除无效零后的字符串 */ fun removeZeroByRegex(number: Double): String { var str = number.toString() // 如果包含小数点,处理末尾的零 if (str.contains(".")) { str = str.replace(Regex("0+?$"), "") // 移除末尾的零 .replace(Regex("[.]$"), "") // 如果小数点后全为零,移除小数点 } return str } } } // 扩展函数方式,更符合Kotlin风格 fun Double?.removeTrailingZeros(): String { if (this == null) return "" return RemoveZeroUtils.removeZeroByDecimalFormat(this) }