1. 将数字转成字符串
- 最简单的便是使用 NumberFormatter 的 localizedString 方法进行数字格式化
- number 属性可以设置相应的显示样式。
- from 属性为需要格式化的数字(必须为 NSNumber 类型)
/// 将数字转成字符串
func test() {
//原始数字(需要先转成NSNumber类型)
let number = NSNumber(value: 1234.5678)
// 四舍五入的整数
let none = NumberFormatter.localizedString(from: number, number: .none)
//小数形式(以国际化格式输出 保留三位小数,第四位小数四舍五入)
let decimal = NumberFormatter.localizedString(from: number, number: .decimal)
//百分数形式
let percent = NumberFormatter.localizedString(from: number, number: .percent)
//科学计数
let scientific = NumberFormatter.localizedString(from: number, number: .scientific)
//朗读形式(英文表示)
let spellOut = NumberFormatter.localizedString(from: number, number: .spellOut)
//序数形式
let ordinal = NumberFormatter.localizedString(from: number, number: .ordinal)
//货币形式(以货币通用格式输出 保留2位小数,第三位小数四舍五入,在前面添加货币符号)
let currency = NumberFormatter.localizedString(from: number, number: .currency)
//货币形式
let currencyISOCode = NumberFormatter.localizedString(from: number,
number: .currencyISOCode)
//货币形式
let currencyPlural = NumberFormatter.localizedString(from: number,
number: .currencyPlural)
//会计计数
let currencyAccounting = NumberFormatter.localizedString(from: number,
number: .currencyAccounting)
//打印结果
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)")
/**
打印结果
原始值 = 1234.5678
none = 1235
decimal = 1,234.568
percent = 123,457%
scientific = 1.2345678E3
spellOut = one thousand two hundred thirty-four point five six seven eight
ordinal = 1,235th
currency = $1,234.57
currencyISOCode = USD1,234.57
currencyPlural = 1,234.57 US dollars
currencyAccounting = $1,234.57
*/
}
2.将字符串转为数字
- NumberFormatter 除了可以将数字转成字符串,还可以将字符串转为数字。
/// 将字符串转成数字
func test1() {
//从字符串装成数字
let number = NumberFormatter().number(from: "1234.5678")!
//四舍五入的整数
let none = NumberFormatter.localizedString(from: number, number: .none)
//小数形式(以国际化格式输出 保留三位小数,第四位小数四舍五入)
let decimal = NumberFormatter.localizedString(from: number, number: .decimal)
//打印结果
print("原始值 = \(number)")
print("none = \(none)")
print("decimal = \(decimal)")
/**
打印结果
原始值 = 1234.5678
none = 1235
decimal = 1,234.568
*/
}
除了使用 NumberFormatter 的 localizedString 方法提供的几种格式化方式外。我们也可以设置 NumberFormatter 对象的相应属性,来实现定制。
3. 修改分割符、分割位数
/// 修改分隔符,分割位数
func test3() {
//原始值
let number = NSNumber(value: 12345.6789)
//创建一个NumberFormatter对象
let numberFormatter = NumberFormatter()
//设置number显示样式
numberFormatter.numberStyle = .decimal // 小数形式
numberFormatter.usesGroupingSeparator = true //设置用组分隔
numberFormatter.groupingSeparator = "," //分隔符号
numberFormatter.groupingSize = 4 //分隔位数
//格式化
let format = numberFormatter.string(from: number)!
//打印结果
print("原始值 = \(number)")
print("格式化结果 = \(format)")
/**
打印结果
原始值 = 12345.6789
格式化结果 = 1,2345.679
*/
}
4. 设置格式宽度、填充符、填充位置
/// 设置格式宽度、填充符、填充位置
func test4() {
//原始值
let number = NSNumber(value: 12345.6789)
//创建一个NumberFormatter对象
let numberFormatter = NumberFormatter()
//设置number显示样式
numberFormatter.numberStyle = .none //四舍五入的整数
numberFormatter.formatWidth = 10 //补齐10位
numberFormatter.paddingCharacter = "0" //不足位数用0补
numberFormatter.paddingPosition = .beforePrefix //补在前面
//格式化
let format = numberFormatter.string(from: number)!
//打印结果
print("原始值 = \(number)")
print("格式化结果 = \(format)")
/**
打印结果
原始值 = 12345.6789
格式化结果 = 0000012346
*/
}
5. 设置最大整数位数、最小整数位数
/// 设置最大整数位数、最小整数位数
func test5() {
//原始值
let number = NSNumber(value: 5.6789)
//创建一个NumberFormatter对象
let numberFormatter = NumberFormatter()
//设置number显示样式
numberFormatter.numberStyle = .none //四舍五入的整数
numberFormatter.maximumIntegerDigits = 4 //设置最大整数位数(超过的直接截断)
numberFormatter.minimumIntegerDigits = 1 //设置最小整数位数(不足的前面补0)
//格式化
let format = numberFormatter.string(from: number)!
//打印结果
print("原始值 = \(number)")
print("格式化结果 = \(format)")
/**
打印结果
原始值 = 5.6789
格式化结果 = 6
*/
}
6. 设置最大小数位数、最小小数位数
/// 设置最大小数位数、最小小数位数
func test8() {
//原始值
let number = NSNumber(value: 12345.6)
//创建一个NumberFormatter对象
let numberFormatter = NumberFormatter()
numberFormatter.maximumFractionDigits = 3 //设置小数点后最多3位
numberFormatter.minimumFractionDigits = 2 //设置小数点后最少2位(不足补0)
//格式化
let format = numberFormatter.string(from: number)!
//打印结果
print("原始值 = \(number)")
print("格式化结果 = \(format)")
}
7. 设置前缀、后缀
/// 设置前缀、后缀
func test6() {
//原始值
let number = NSNumber(value: 12345.6789)
//创建一个NumberFormatter对象
let numberFormatter = NumberFormatter()
//设置number显示样式
numberFormatter.numberStyle = .none //四舍五入的整数
numberFormatter.positivePrefix = "$" //自定义前缀
numberFormatter.positiveSuffix = "元" //自定义后缀
//格式化
let format = numberFormatter.string(from: number)!
//打印结果
print("原始值 = \(number)")
print("格式化结果 = \(format)")
/**
打印结果
原始值 = 12345.6789
格式化结果 = $12346元
*/
}
8. 设置格式化字符串
/// 设置格式化字符串
func test7() {
//原始值
let number = NSNumber(value: -12345.6789)
//创建一个NumberFormatter对象
let numberFormatter = NumberFormatter()
numberFormatter.positiveFormat = "##,##,##.##" //设置格式
//格式化
let format = numberFormatter.string(from: number)!
//打印结果
print("原始值 = \(number)")
print("格式化结果 = \(format)")
/**
打印结果
原始值 = -12345.6789
格式化结果 = -1,23,45.68
*/
}