Swift2 Swift 2-将十进制0添加到CGFloat

Swift2 Swift 2-将十进制0添加到CGFloat,swift2,decimalformat,cgfloat,Swift2,Decimalformat,Cgfloat,我正在尝试将字符串转换为CGFloatnumber。 如果等于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 CGFlo

我正在尝试将字符串转换为
CGFloat
number。 如果等于
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
无法执行此操作,请将浮点值转换回
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 */

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 */

适用于swift 4

尝试在
格式中使用
NumberFormatter
。十进制
格式:

让text=“123456.789”


适用于swift 4

尝试在
格式中使用
NumberFormatter
。十进制
格式:

让text=“123456.789”


您是想保留字符串中最初使用的精度(小数位数),还是总是想用2个小数格式化结果?我想总是用2个小数格式化结果decimals@SNos如果要将数字转换为字符串,请使用
NSNumberFormatter
。是否要保持精度(小数位数)最初在字符串中使用,还是您总是希望用2个小数格式化结果?我正在尝试总是用2个小数格式化结果decimals@SNos如果要将数字转换为字符串,请使用
NSNumberFormatter
??“
在这种情况下没有什么意义,您希望在转换失败时引发异常(因为它永远不会发生),而不是默默地接受它。我会使用
@Sulthan您是对的;源于我的(这里:可能不好)习惯于在回答SO问题时避免使用
,以免误导他人在不太合适的情况下使用
展开包装。有了这两条评论,希望这里不会出现这种情况,感谢您指出这一点!
??“
在这种情况下没有什么意义,您希望在转换失败时引发异常(因为它永远不会发生),而不是默默地接受它。我会使用
@Sulthan您是对的;源于我的(这里:可能不好)习惯于在回答SO问题时避免使用
,以免误导他人在不太合适的情况下使用
展开包装。有了这两条评论,希望这里不会出现这种情况,感谢您指出这一点!