是否有一个简单的命令可以将1.60543e+06格式化为1,605,436???结果FV.文本=字符串。带有格式的本地化字符串(“%f”,fv)不明白。
xv8emn3q1#
在雨燕3中,
NumberFormatter.localizedString(from: NSNumber(value: whatever), number: NumberFormatter.Style.decimal)
ac1kyiln2#
Swift Xcode 6.3,SOLVED(我决定在代码中保留$)。如果您不希望在输出中出现$,请将.CurrencyStyle更改为.DecimalStyle
var fv = 3534234.55 var formatter = NSNumberFormatter() formatter.numberStyle = .CurrencyStyle formatter.maximumFractionDigits = 0; resultFV.text = formatter.stringFromNumber(fv) // result: $3,534,235 –
xsuvu9jc3#
为此,您应该使用NumberFormatter:
NumberFormatter
let numberFormatter = NumberFormatter() numberFormatter.numberStyle = .decimal resultFV.text = numberFormatter.string(from: fv)
nhaq1z214#
Swift 4.1货币字符串更新:
let balance = 1234567 let formatter = NumberFormatter() formatter.numberStyle = .currency formatter.maximumFractionDigits = 0 let result = formatter.string(from: NSNumber(value: balance)) // result: $1,234,567
您可以将formatter.numberStyle更改为.decimal,使其保留为不带“$”符号的数字。
formatter.numberStyle
.decimal
ma8fv8wu5#
你可以通过使用Swift 3+中的String初始化器来实现这一点:
// 1605436 let value: Int = 1605436 // "1,605,436" where Locale == en_US let formattedInt = String(format: "%d", locale: Locale.current, value) // "1,605,436" where Locale == en_US let formattedDouble = String(format: "%.0f", locale: Locale.current, Double(value))
798qvoo86#
Swift 5的更新
var unformattedValue : Double = 3534234.55 var formatter = NumberFormatter() formatter.numberStyle = .currency // or .decimal if desired formatter.maximumFractionDigits = 2; //change as desired formatter.locale = Locale.current // or = Locale(identifier: "de_DE"), more locale identifier codes: https://gist.github.com/jacobbubu/1836273 var displayValue : String = formatter.string(from: NSNumber(value: unformattedValue))! // displayValue: "$3,534,235" ```
3yhwsihp7#
为什么不限制精度,比如".0f"
".0f"
resultFV.text = String.localizedStringWithFormat("%.0f", fv)
更新答案:
var formatter: NSNumberFormatter = NSNumberFormatter() formatter.numberStyle = NSNumberFormatterStyle.DecimalStyle; var formattedStr: NSString = formatter.stringFromNumber(NSNumber(double: fv))! resultFV.text = formattedStr
xuo3flqw8#
更新使用Foundation中适用于macOS 12.0+、iOS 15.0+、tvOS 15.0+和watchOS 8.0+的数据格式。
Foundation
let number: Int = 1000 let formatted = number.formatted(.number.grouping(.never)) print(formatted)
控制台输出:"1000"number可以是任何BinaryFloatingPoint或BinaryInteger
"1000"
number
BinaryFloatingPoint
BinaryInteger
8条答案
按热度按时间xv8emn3q1#
在雨燕3中,
ac1kyiln2#
Swift Xcode 6.3,SOLVED(我决定在代码中保留$)。如果您不希望在输出中出现$,请将.CurrencyStyle更改为.DecimalStyle
xsuvu9jc3#
为此,您应该使用
NumberFormatter
:nhaq1z214#
Swift 4.1货币字符串更新:
您可以将
formatter.numberStyle
更改为.decimal
,使其保留为不带“$”符号的数字。ma8fv8wu5#
你可以通过使用Swift 3+中的String初始化器来实现这一点:
798qvoo86#
Swift 5的更新
3yhwsihp7#
为什么不限制精度,比如
".0f"
更新答案:
xuo3flqw8#
更新
使用
Foundation
中适用于macOS 12.0+、iOS 15.0+、tvOS 15.0+和watchOS 8.0+的数据格式。控制台输出:
"1000"
number
可以是任何BinaryFloatingPoint
或BinaryInteger