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.317.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