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

Kotlin中如何将带小数点的字符串转为Double并处理小数部分?

问题:将小数部分转换为0.xxx形式的Kotlin实现

我正在Hyperskill的Kotlin项目中开发一款支持分数转换的数字转换器,目前在分数转换环节遇到了问题。现有代码片段如下:

else if (userInput.contains(".")) {
    var firstPart = userInput.substringBefore(".").toBigInteger()
    var secondPart = userInput.substringAfter(".").toString()
}

我该如何将secondPart转换为正确的形式?例如当用户输入为15.375时,secondPart应变为0.375。


解决方案

1. 直接构造目标字符串

如果仅需要0.xxx格式的字符串结果,直接拼接即可:

val decimalPartStr = "0.$secondPart"

输入15.375时,secondPart为"375",拼接后得到"0.375"。

2. 转换为精确数值类型(推荐)

若需要用于后续精确计算(比如分数转换),优先使用BigDecimal避免浮点数精度问题:

import java.math.BigDecimal

val decimalPart = BigDecimal("0.$secondPart")

此方法能精确得到BigDecimal类型的0.375,适合需要高精度的场景。

3. 用Double转换(精度风险提示)

如果对精度要求不高,也可以通过计算得到Double类型结果:

val decimalPart = secondPart.toDouble() / 10.0.pow(secondPart.length)

需要注意:浮点数(如Double)无法精确表示所有小数(比如0.1),可能导致后续计算误差,不建议用于分数转换这类需要精确值的场景。


内容的提问来源于stack exchange,提问作者Tibor Tóth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 03:50:20