Swift中字符串转保留三位小数浮点数显示为0.000如何解决
问题原因
你直接对拼接了货币符号的完整字符串调用toThreeDecimalAmount方法时,字符串中包含$等非数字字符,转换为Double类型时会解析失败返回0,最终输出结果为0.000。正确逻辑是先处理数值部分,再拼接货币符号等前缀内容。
实现代码
修改后的赋值逻辑如下:
// 提取并计算金额数值 let originalTotal = (cartDB?.result?.cart?.total ?? "0") as NSString let calculatedTotal = originalTotal.doubleValue * Double(CURRENCY_FACTOR) // 格式化金额为三位小数 let formattedTotal = calculatedTotal.toThreeDecimalAmount // 拼接完整文案赋值 lblTotalPrice.text = "Total \(CURRENT_CURRENCY.currency_code ?? "$")\(formattedTotal)"
可选优化点
- 你的String扩展如果遇到非数字格式的输入会直接返回
0.000,如果需要兼容异常场景可以添加合法性判断,避免不符合预期的0值输出 - 涉及金额计算建议统一用Double类型处理,避免Float和Double混用导致的精度丢失问题
内容的提问来源于stack exchange,提问作者Swift
相关产品推荐
相关产品推荐

