Swift 2 - 将小数点 0 添加到 CGFloat
Swift 2 - add decimal 0 to CGFloat
我正在尝试将字符串转换为 CGFloat
数字。
如果等于 0
.
,我的代码会删除最后一位数字
如何防止删除零?
let str = "17.30"
let flt = CGFloat((str as NSString).doubleValue) + 2.0
print(flt) // 19.3 -- should be 19.30
CGFloat
不能这样做,将浮点数转换回 String
print(String(format: "%.2f", flt)) // 19.30
CGFloat
只是一个数字(所以 17.3
和 17.30
是相同的值);您真正关心的是如何设置 CGFloat
号码的 String
表示。
作为@vadian:s 解决方案的替代方案,您可以按如下方式使用 NSNumberFormatter
/* Your CGFloat example */
let str = "17.30"
let flt = CGFloat((str as NSString).doubleValue) + 2.0
/* Use NSNumberFormatter to display your CGFloat
with exactly 2 fraction digits. */
let formatter = NSNumberFormatter()
formatter.maximumFractionDigits = 2
formatter.minimumFractionDigits = 2
print(formatter.stringFromNumber(flt)!)
/* 19.30 */
为swift4
尝试以 .decimal
格式使用 NumberFormatter
:
let text = "123456.789"
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 2
let value = formatter.string(from: text! as NSNumber)!
print(value)
Output: 123,456.78
我正在尝试将字符串转换为 CGFloat
数字。
如果等于 0
.
如何防止删除零?
let str = "17.30"
let flt = CGFloat((str as NSString).doubleValue) + 2.0
print(flt) // 19.3 -- should be 19.30
CGFloat
不能这样做,将浮点数转换回 String
print(String(format: "%.2f", flt)) // 19.30
CGFloat
只是一个数字(所以 17.3
和 17.30
是相同的值);您真正关心的是如何设置 CGFloat
号码的 String
表示。
作为@vadian:s 解决方案的替代方案,您可以按如下方式使用 NSNumberFormatter
/* Your CGFloat example */
let str = "17.30"
let flt = CGFloat((str as NSString).doubleValue) + 2.0
/* Use NSNumberFormatter to display your CGFloat
with exactly 2 fraction digits. */
let formatter = NSNumberFormatter()
formatter.maximumFractionDigits = 2
formatter.minimumFractionDigits = 2
print(formatter.stringFromNumber(flt)!)
/* 19.30 */
为swift4
尝试以 .decimal
格式使用 NumberFormatter
:
let text = "123456.789"
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 2
let value = formatter.string(from: text! as NSNumber)!
print(value)
Output: 123,456.78