1止喷,將數(shù)字轉(zhuǎn)成字符串
(1)最簡(jiǎn)單的便是使用 NumberFormatter 的 localizedString 方法進(jìn)行數(shù)字格式化:
- from 屬性為需要格式化的數(shù)字(必須為 NSNumber 類(lèi)型)
- number 屬性可以設(shè)置相應(yīng)的顯示樣式辙售。
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//原始數(shù)字(需要先轉(zhuǎn)成NSNumber類(lèi)型)
let number = NSNumber(value: 1234.5678)
//四舍五入的整數(shù)
let none = NumberFormatter.localizedString(from: number, number: .none)
//小數(shù)形式(以國(guó)際化格式輸出 保留三位小數(shù),第四位小數(shù)四舍五入)
let decimal = NumberFormatter.localizedString(from: number, number: .decimal)
//百分?jǐn)?shù)形式
let percent = NumberFormatter.localizedString(from: number, number: .percent)
//科學(xué)計(jì)數(shù)
let scientific = NumberFormatter.localizedString(from: number, number: .scientific)
//朗讀形式(英文表示)
let spellOut = NumberFormatter.localizedString(from: number, number: .spellOut)
//序數(shù)形式
let ordinal = NumberFormatter.localizedString(from: number, number: .ordinal)
//貨幣形式(以貨幣通用格式輸出 保留2位小數(shù),第三位小數(shù)四舍五入,在前面添加貨幣符號(hào))
let currency = NumberFormatter.localizedString(from: number, number: .currency)
//貨幣形式
let currencyISOCode = NumberFormatter.localizedString(from: number,
number: .currencyISOCode)
//貨幣形式
let currencyPlural = NumberFormatter.localizedString(from: number,
number: .currencyPlural)
//會(huì)計(jì)計(jì)數(shù)
let currencyAccounting = NumberFormatter.localizedString(from: number,
number: .currencyAccounting)
//打印結(jié)果
print("原始值 = \(number)")
print("none = \(none)")
print("decimal = \(decimal)")
print("percent = \(percent)")
print("scientific = \(scientific)")
print("spellOut = \(spellOut)")
print("ordinal = \(ordinal)")
print("currency = \(currency)")
print("currencyISOCode = \(currencyISOCode)")
print("currencyPlural = \(currencyPlural)")
print("currencyAccounting = \(currencyAccounting)")
}
}
image.png
2,將字符串轉(zhuǎn)為數(shù)字
(1)NumberFormatter 除了可以將數(shù)字轉(zhuǎn)成字符串芯勘,還可以將字符串轉(zhuǎn)為數(shù)字。
//從字符串裝成數(shù)字
let number = NumberFormatter().number(from: "1234.5678")!
//四舍五入的整數(shù)
let none = NumberFormatter.localizedString(from: number, number: .none)
//小數(shù)形式(以國(guó)際化格式輸出 保留三位小數(shù),第四位小數(shù)四舍五入)
let decimal = NumberFormatter.localizedString(from: number, number: .decimal)
//打印結(jié)果
print("原始值 = \(number)")
print("none = \(none)")
print("decimal = \(decimal)")
image.png
二绢慢、進(jìn)階用法
除了使用 NumberFormatter 的 localizedString 方法提供的幾種格式化方式外腻贰。我們也可以設(shè)置 NumberFormatter 對(duì)象的相應(yīng)屬性,來(lái)實(shí)現(xiàn)定制巩搏。
1吞歼,修改分割符、分割位數(shù)
image.png
//原始值
let number = NSNumber(value: 12345.6789)
//創(chuàng)建一個(gè)NumberFormatter對(duì)象
let numberFormatter = NumberFormatter()
//設(shè)置number顯示樣式
numberFormatter.numberStyle = .decimal // 小數(shù)形式
numberFormatter.usesGroupingSeparator = true //設(shè)置用組分隔
numberFormatter.groupingSeparator = "," //分隔符號(hào)
numberFormatter.groupingSize = 4 //分隔位數(shù)
//格式化
let format = numberFormatter.string(from: number)!
//打印結(jié)果
print("原始值 = \(number)")
print("格式化結(jié)果 = \(format)")
2塔猾,設(shè)置格式寬度、填充符稽坤、填充位置
image.png
//原始值
let number = NSNumber(value: 12345.6789)
//創(chuàng)建一個(gè)NumberFormatter對(duì)象
let numberFormatter = NumberFormatter()
//設(shè)置number顯示樣式
numberFormatter.numberStyle = .none //四舍五入的整數(shù)
numberFormatter.formatWidth = 10 //補(bǔ)齊10位
numberFormatter.paddingCharacter = "0" //不足位數(shù)用0補(bǔ)
numberFormatter.paddingPosition = .beforePrefix //補(bǔ)在前面
//格式化
let format = numberFormatter.string(from: number)!
//打印結(jié)果
print("原始值 = \(number)")
print("格式化結(jié)果 = \(format)")
3丈甸,設(shè)置最大整數(shù)位數(shù)、最小整數(shù)位數(shù)
image.png
//原始值
let number = NSNumber(value: 5.6789)
//創(chuàng)建一個(gè)NumberFormatter對(duì)象
let numberFormatter = NumberFormatter()
//設(shè)置number顯示樣式
numberFormatter.numberStyle = .none //四舍五入的整數(shù)
numberFormatter.maximumIntegerDigits = 4 //設(shè)置最大整數(shù)位數(shù)(超過(guò)的直接截?cái)啵?numberFormatter.minimumIntegerDigits = 3 //設(shè)置最小整數(shù)位數(shù)(不足的前面補(bǔ)0)
//格式化
let format = numberFormatter.string(from: number)!
//打印結(jié)果
print("原始值 = \(number)")
print("格式化結(jié)果 = \(format)")
4尿褪,設(shè)置最大小數(shù)位數(shù)睦擂、最小小數(shù)位數(shù)
image.png
//原始值
let number = NSNumber(value: 12345.6)
//創(chuàng)建一個(gè)NumberFormatter對(duì)象
let numberFormatter = NumberFormatter()
numberFormatter.maximumFractionDigits = 3 //設(shè)置小數(shù)點(diǎn)后最多3位
numberFormatter.minimumFractionDigits = 2 //設(shè)置小數(shù)點(diǎn)后最少2位(不足補(bǔ)0)
//格式化
let format = numberFormatter.string(from: number)!
//打印結(jié)果
print("原始值 = \(number)")
print("格式化結(jié)果 = \(format)")
5,設(shè)置前綴杖玲、后綴
image.png
//原始值
let number = NSNumber(value: 12345.6789)
//創(chuàng)建一個(gè)NumberFormatter對(duì)象
let numberFormatter = NumberFormatter()
//設(shè)置number顯示樣式
numberFormatter.numberStyle = .none //四舍五入的整數(shù)
numberFormatter.positivePrefix = "$" //自定義前綴
numberFormatter.positiveSuffix = "元" //自定義后綴
//格式化
let format = numberFormatter.string(from: number)!
//打印結(jié)果
print("原始值 = \(number)")
print("格式化結(jié)果 = \(format)")
6顿仇,設(shè)置格式化字符串
image.png
//原始值
let number = NSNumber(value: -12345.6789)
//創(chuàng)建一個(gè)NumberFormatter對(duì)象
let numberFormatter = NumberFormatter()
numberFormatter.positiveFormat = "###,###.##" //設(shè)置格式
//格式化
let format = numberFormatter.string(from: number)!
//打印結(jié)果
print("原始值 = \(number)")
print("格式化結(jié)果 = \(format)")