首页 > 解决方案 > 为什么我的字符串格式化程序使参数 0.00 而不是它的实际值

问题描述

我希望这是一个小修复,但我有一个文本字段,它是用户输入的数字。它的出口称为 billTextField。我需要将其更改为浮点数/双精度数而不是字符串,但我希望它不会超过小数点后两位。我调试了,当我去的时候

Double(billTextField.text ?? "") ?? 1

它打印正确的值,但是当我尝试使用字符串格式化程序时

Double(String(format: "%.2f", billTextField.text ?? "")) ?? 2

即使我的文本字段显示 125.50 或任何其他数字,该值也会变为 0.00。我认为它一定是导致这种情况的字符串格式化程序,有什么想法吗?

标签: iosswiftstringxcodeformat

解决方案


这里的问题是String(format:)您需要提供第二个参数 as Double,方法如下:

let doubleValue = Double(billTextField.text!) ?? 0 // You can force unwrap strings since it never returns nil credits @Leo
let roundedDoubleValue = Double(String(format: "%.2f", doubleValue)) ?? 2

或者round像这样在 Double 上使用:

let roundedDoubleValue = Double(round(100*doubleValue)/100) // number of zeros for number of places

推荐阅读