Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 将字符串转换为数字、格式;除非无法强制转换,否则string=string_Swift_Casting_Conditional - Fatal编程技术网

Swift 将字符串转换为数字、格式;除非无法强制转换,否则string=string

Swift 将字符串转换为数字、格式;除非无法强制转换,否则string=string,swift,casting,conditional,Swift,Casting,Conditional,变量benefit.amount以字符串形式输入 var amount = String() if let tempAmount = benefit.amount as? NSDecimalNumber { amount = Formatter.currencyFormat(tempAmount) } else { amount = tempAmount } 我所要做的就是,如果benefit.amount类似于1000,我就可以在上面使用货币格式化程序。有时,尽管该变量可能看

变量
benefit.amount
以字符串形式输入

var amount = String()
if let tempAmount = benefit.amount as? NSDecimalNumber {
    amount = Formatter.currencyFormat(tempAmount)
} else {
    amount = tempAmount
}
我所要做的就是,如果
benefit.amount
类似于
1000
,我就可以在上面使用货币格式化程序。有时,尽管该变量可能看起来像是政策年度最大福利中包含的
,但显然无法将其转换为数字


请告知。

请尝试将值转换为
Int
。初始化器在失败时返回
nil

let amount : String
if let tempAmount = Int(benefit.amount) {
    amount = Formatter.currencyFormat(tempAmount)
} else {
    amount = benefit.amount
}

只需尝试将该值转换为
Int
。初始化器在失败时返回
nil

let amount : String
if let tempAmount = Int(benefit.amount) {
    amount = Formatter.currencyFormat(tempAmount)
} else {
    amount = benefit.amount
}

您必须使用
init(string:)
方法,并将结果与
NSDecimalNumber.notANumber()进行比较:


您必须使用
init(string:)
方法,并将结果与
NSDecimalNumber.notANumber()进行比较:


如果您尝试转换类似“1.23”的金额,则
Int
init方法将失败。使用
浮点
是有问题的,因为十进制数在内部二进制格式中存储不好,并且通常不会得到与开始时相同的值
NSDecimalNumber
用于准确存储以10为基数的数字。如果尝试转换类似“1.23”的金额,则
Int
init方法将失败。使用
浮点是有问题的,因为十进制数在内部二进制格式中存储不好,并且通常不会得到与开始时相同的值
NSDecimalNumber
用于准确存储基数为10的数字。