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

如何在Kotlin Multiplatform中不使用外部库对数值取整?

KMP跨平台实现Double指定小数位取整

直接基于Kotlin标准库实现跨平台的Double取整逻辑,无需针对各平台单独编码,核心思路是通过10的幂次缩放数值后进行四舍五入,再还原回去:

fun Double.roundToDecimalPlaces(decimalPlaces: Int): Double {
    require(decimalPlaces >= 0) { "小数位数不能为负数" }
    val multiplier = 10.0.pow(decimalPlaces)
    return (this * multiplier).roundToInt().toDouble() / multiplier
}

实现说明

  • 参数校验:确保传入的小数位是非负整数,避免非法输入
  • 缩放逻辑:通过10.0.pow(decimalPlaces)计算缩放倍数,比如保留2位小数时倍数为100.0
  • 四舍五入:将原数乘以倍数后调用roundToInt()完成四舍五入,再转回Double并除以倍数还原数值

使用示例

val num1 = 3.14159.roundToDecimalPlaces(2) // 结果为3.14
val num2 = 2.71828.roundToDecimalPlaces(3) // 结果为2.718
val num3 = 5.5.roundToDecimalPlaces(0)     // 结果为6.0

这个方案完全依赖Kotlin标准库的通用API,在KMP支持的所有目标平台(JVM、JS、Native)都能正常运行,无需额外的平台适配代码,且全部使用基本类型完成计算。

内容的提问来源于stack exchange,提问作者Saher Al-Sous

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 13:13:15