尝试将字符串转换为双精度时出错
Posted
技术标签:
【中文标题】尝试将字符串转换为双精度时出错【英文标题】:Error when trying to convert string to a double 【发布时间】:2015-02-18 06:55:17 【问题描述】:我正在尝试在 Swift 中将 String 转换为 Double 值。在做了很多研究之后,我相信这将是把我的字符串变成 Double 的最好方法。但是现在我遇到了一个我不知道如何解决的错误。
var purchaseAmount: Double = 200
var cashTendered: Double = 425.45
var changeRequired: Double = 0
var currencyValues = ["100", "50", "20", "10", "5", "2", "1", "0.50", "0.20", "0.10", "0.05"]
import Cocoa
if cashTendered < purchaseAmount
println("Not enough cash tendered")
else
changeRequired = cashTendered - purchaseAmount
for currency in currencyValues
var doubleCurrency = (currency as NSString).doubleValue
var amountOfCurrency = changeRequired / doubleCurrency
amountOfCurrency = floor(amountOfCurrency)
changeRequired = changeRequired - (amountOfCurrency * currency)
changeRequired = round(changeRequired * 100)/100
println("$\(currency) X \(Int(amountOfCurrency))")
这是错误:
我该怎么做才能解决这个问题?
【问题讨论】:
图片通常会有所帮助,但当涉及到代码时,最好使用旧的纯文本格式 @Antonio 我在文本中添加了代码 代码和图片不匹配。您现在看到的实际错误是什么? 请大家在您对问题投反对票时添加评论,尤其是对于新用户。这是普通的礼貌。 这是另一个很好的例子,为什么你不应该忽略显式类型定义。 【参考方案1】:首先初始化String
数组,如下所示:
let currencyValues : [String] = ["100", "50", "20", "10", "5", "2", "1", "0.50", "0.20", "0.10", "0.05"]
但是它不是必需的类型声明,因为 Swift 具有重要的功能Type Interface。但大多数做法是在使用数组时定义类型。
关于将字符串转换为双精度,您可以使用以下代码:
for currency : String in currencyValues
let doubleCurrency = NSNumberFormatter().numberFromString(currency)!.doubleValue
print(doubleCurrency)
【讨论】:
【参考方案2】:发布代码比图片更容易查看,但如果所有其他方法都失败了,还有 NSNumberFormatter。 NSNumberFormatter 的其他优点是允许您转换两个方向并获得像货币这样的良好输出。
【讨论】:
对于这个任务,我只需要将字符串转换为Double值,这样我就可以进行一些计算了。以上是关于尝试将字符串转换为双精度时出错的主要内容,如果未能解决你的问题,请参考以下文章