如何仅对小数部分为.0的数字取整 寻找Kotlin标准库实现方案
Kotlin 实现小数部分为0时自动取整的方案
Kotlin 标准库没有提供直接实现该需求的单一内置方法,但可以通过标准库现有方法快速组合实现,成本很低。
数值类型处理方案
如果需要返回数值类型(整数/浮点型根据场景自动切换),可以通过判断数字对1取余的结果是否为0实现,封装为扩展函数即可全局使用:
// 针对 Double 类型的实现 fun Double.normalizeZeroDecimal(): Number = if (this % 1.0 == 0.0) toInt() else this // 兼容 Float、Int 等所有数字类型的通用实现 fun Number.normalizeZeroDecimal(): Number = when (this) { is Double -> if (rem(1.0) == 0.0) toInt() else this is Float -> if (rem(1f) == 0f) toInt() else this else -> this }
测试效果完全符合预期:
10.0.normalizeZeroDecimal()结果为1010.3.normalizeZeroDecimal()结果为10.310.7.normalizeZeroDecimal()结果为10.7
字符串输出格式化方案
如果仅需要在输出时去掉末尾的.0,直接使用格式化工具即可,不需要修改原数值:
import java.text.DecimalFormat val format = DecimalFormat("#.###") // 井号代表存在对应数位才显示 println(format.format(10.0)) // 输出 10 println(format.format(10.3)) // 输出 10.3 println(format.format(10.7)) // 输出 10.7
内容的提问来源于stack exchange,提问作者Sharan
相关产品推荐
相关产品推荐

