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
相关产品推荐
相关产品推荐

