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

Kotlin Android:如何将数值转为保留两位小数的Double类型?

解决方案

首先要明确:Double类型本身并不存储小数位数信息,100.0和100.00在Double中是完全等价的数值,API所谓的“仅接受保留两位小数的Double”其实大概率是描述有误,真实需求应该是要求提交带两位小数格式的字符串。

针对你的场景,正确的处理方式是:

  • 不要将格式化后的字符串转回Double,直接使用格式化后的字符串提交给API:
    // 格式化后保留两位小数的字符串,比如输入100会得到"100.00"
    val priceForApi = String.format("%.2f", priceInput.value!!.toDouble())
    // 直接把priceForApi作为参数提交给API
    

如果API确实明确要求接收Double类型参数,那这里存在逻辑矛盾——因为Double无法区分100.0和100.00。这种情况下可以尝试用BigDecimal来保证精度,再转换为Double(不过本质上数值还是一样的):

import java.math.BigDecimal
import java.math.RoundingMode

val priceBigDecimal = BigDecimal(priceInput.value!!.toDouble())
    .setScale(2, RoundingMode.HALF_UP)
val priceDouble = priceBigDecimal.toDouble()
// 提交priceDouble给API

但要注意,即使这样,priceDouble在内存中还是100.0而非100.00,只是保证了数值精度是两位小数的等价值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 07:22:02