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

Kotlin整数转十进制及厘米转英尺英寸拆分问题

问题2:拆分英尺高度的整数与小数部分

你当前的问题有两个核心问题:一是用字符串截取浮点数的方式不可靠(浮点数toString()可能出现科学计数法、格式不稳定等情况);二是"0.{$inc}".toInt()写法错误——不仅字符串模板语法不对(应该是"0.$inc"),而且小数不能直接转成Int类型。

正确的解决方式:用数学运算拆分

直接通过数值计算提取整数部分和小数部分,比字符串操作更可靠:

fun onCmToFtChange(_height: Int) {
    val ftHeight = _height * 0.032808399
    // 提取英尺的整数部分
    val ftInt = ftHeight.toInt()
    // 计算小数部分,得到0.xxxx格式的数值
    val incDecimal = ftHeight - ftInt

    _viewState.update {
        it.copy(
            ft = ftInt.toString(),
            inc = incDecimal.toString().substringAfter(".", "").take(1), // 保留原逻辑取小数第一位
            _ft = ftInt,
            _inc = incDecimal // 直接赋值小数部分,若_inc是Double类型
            // 如果需要将小数部分转成英寸数(1英尺=12英寸),可以这样写:
            // _inc = (incDecimal * 12).toInt()
        )
    }
}

说明

  1. ftHeight.toInt()直接获取英尺的整数部分,避免了字符串截取的不确定性。
  2. ftHeight - ftInt精确计算出小数部分,得到你需要的0.xxxx格式数值。
  3. 若_inc需要的是整数类型,大概率是要将小数部分转换为英寸数(1英尺=12英寸),此时只需计算incDecimal * 12再转成Int即可。

内容的提问来源于stack exchange,提问作者NewPartizal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 14:41:43