我试图将字符串转换为CGFloat
数字。 如果等于0
,我的代码将删除最后一位数字。Swift 2 - 向CGFloat添加十进制0
如何防止切出零点?
let str = "17.30"
let flt = CGFloat((str as NSString).doubleValue) + 2.0
print(flt) // 19.3 -- should be 19.30
我试图将字符串转换为CGFloat
数字。 如果等于0
,我的代码将删除最后一位数字。Swift 2 - 向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:■解决方案,你可以使用一个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 */
你是不是想保留原来的字符串中使用的精确度(小数点后的数字),或者你总是想用2个小数格式化结果? – Stefan
我试图格式总是结果2小数 – SNos
@SNOS如果你想转换为字符串的数字,使用'NSNumberFormatter'。 – Sulthan