ios - 为什么我的字符串格式化程序使参数 0.00 而不是它的实际值
问题描述
我希望这是一个小修复,但我有一个文本字段,它是用户输入的数字。它的出口称为 billTextField。我需要将其更改为浮点数/双精度数而不是字符串,但我希望它不会超过小数点后两位。我调试了,当我去的时候
Double(billTextField.text ?? "") ?? 1
它打印正确的值,但是当我尝试使用字符串格式化程序时
Double(String(format: "%.2f", billTextField.text ?? "")) ?? 2
即使我的文本字段显示 125.50 或任何其他数字,该值也会变为 0.00。我认为它一定是导致这种情况的字符串格式化程序,有什么想法吗?
解决方案
这里的问题是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
推荐阅读
- python - 在 Django 中使用电子邮件和密码登录
- flutter - 在颤动中调整脚手架的大小
- java - 如何为我的 android 应用程序创建 ssh 或任何 linux 终端视图?
- python - 使用“函数”中的“for循环”打印DataFrame每列的最小值/最大值
- javascript - CSS 文件未正确链接
- rabbitmq - 动态铲除节点间消息的确认
- swift - 如何在多个视图控制器上使用套接字?swift-socket.io
- java - 当这个新的 Thread() 在 Android 中被 GC 处理?
- javascript - 有没有办法列出网页的所有可用 css 类?
- bash - 更新嵌套变量中的值