【发布时间】:2015-04-01 15:50:01
【问题描述】:
我正在swift 中编写一个应用程序,并使用了以下代码。所以我的输出按预期四舍五入到小数点后两位。
这运作良好。但是,如果结果小于 2 位小数,则仅显示 1 位。这是最基本的示例,但我的结果可能是整数或小数点后 10 位。我希望他们都显示为 .xx
1.2345 => 1.23
1.1 => 1.1
无论小数点后的位数如何,如何让结果始终显示 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)")
感谢 cmets。我修改如下:
@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)
它让我丢失了很多代码,因为它为我做四舍五入和小数位,同时还包括货币作为奖励。
虽然这适用于我确实需要显示货币的所有字段,但上述值“oddsLabel.text”实际上不是货币,因此只解决了四舍五入和小数位。
我如何修改上述内容,以便考虑使用和/或不使用货币的字段。希望无需再次重新复制代码?
再次感谢所有快速回复。
弗兰克
【问题讨论】:
-
为每个字段创建一个新的格式化程序实例。你不必复制,只需为常见的东西创建函数。
标签: swift