我正在编写应用程序,swift并使用了以下代码.所以我的输出按预期向上舍入到小数点后2位.
这很好用.但是,如果结果小于2位小数,则仅显示1位数.这是最基本的例子,但我的结果可能是整数或10位小数.我希望他们都能表现出来.xx
1.2345 => 1.23
1.1 => 1.1
Run Code Online (Sandbox Code Playgroud)
无论小数点后的位数如何,如何使结果始终显示2位小数?
例如:  1.1 => 1.10
我已经进行了广泛的搜索,但答案得不到我.这是我到目前为止尝试过的代码:
@IBOutlet var odds: UITextField!
@IBOutlet var oddsLabel: UILabel!
var enteredOdds = NSString(string: odds.text).doubleValue
var numberOfPlaces = 2.0
var multiplier = pow(10.0, numberOfPlaces)
var enteredOddsRounded = round(enteredOdds * multiplier) / multiplier          
oddsLabel.text = "\(enteredOddsRounded)"
println("\(enteredOddsRounded)")
Run Code Online (Sandbox Code Playgroud)
感谢您的评论.我修改如下:
@IBOutlet var odds: UITextField!
@IBOutlet var oddsLabel: UILabel!
var enteredOdds = NSString(string: odds.text).doubleValue
let formatter = NSNumberFormatter()
formatter.numberStyle = NSNumberFormatterStyle.CurrencyStyle
for identifier in ["en_UK", "eu_US"] {
    formatter.locale = NSLocale(localeIdentifier: identifier)
    formatter.minimumFractionDigits = 2
    formatter.maximumFractionDigits = 2
}
oddsLabel.text = formatter.stringFromNumber(enteredOdds)
Run Code Online (Sandbox Code Playgroud)
它让我失去了很多代码,因为它为我提供了舍入和小数位,同时还包括货币作为奖励.
这已经适用于我确实需要显示货币的所有字段,上面的值'oddsLabel.text'实际上并不是货币,所以只解决了舍入和小数位.
如何修改上述内容,以便考虑使用和/或不使用货币的字段.希望不再重新复制代码?
再次感谢所有快速回复.
坦率
emr*_*s57 16
let b = 2.1
println(String(format:"%.02f", b))
Run Code Online (Sandbox Code Playgroud)
在我的操场上给出字符串"2.10".
Sul*_*han 11
你所使用的被称为"天真"的实现.它主要起作用,但它有一些小问题和一些隐藏的问题.其中一个隐藏的问题是您完全忽略用户区域设置 - 大多数欧洲语言使用逗号作为小数分隔符而不是点.
为了处理十进制数到字符串转换的问题(反之亦然),大多数编程语言都提供专用API.在Cocoa/CocoaTouch中有NSNumberFormatter.
例:
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.minimumFractionDigits = 2
formatter.maximumFractionDigits = 2
oddsLabel.text = formatter.stringFromNumber(enteredOdds)
Run Code Online (Sandbox Code Playgroud)
请注意,舍入是为您完成的.
也许您正在寻找NSNumberFormatter:
let nf = NSNumberFormatter()
nf.minimumFractionDigits = 2
nf.stringFromNumber(enteredOddsRounded)
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           9410 次  |  
        
|   最近记录:  |