You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅对小数部分为.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() 结果为 10
  • 10.3.normalizeZeroDecimal() 结果为 10.3
  • 10.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 17:36:04