数字の省略表記とは?
SNSでフォロワーの数が省略されている事があります
正直、日本では使わないと思うのでぱっと見ではこれが何桁の数字なのか分からないと思います。
簡単に説明すると
1K = 1,000
(000が1個ならK)
1M = 1,000,000
(000が2個ならM)
このような法則があります。
数字から省略表記に変換する拡張を作る機会が合ったので共有したいと思います。
作ったもの
1.0K
のような場合は.0
を削除しています
import Foundation
extension Int {
func calcNumericalValue() -> String {
if self >= 1000000 {
let i = Double(self) / 100000
if "\(Double(round(i) / 10))M".contains(".0") {
return "\(Double(round(i) / 10))M".replacingOccurrences(of: ".0", with: "")
} else {
return "\(Double(round(i) / 10))M"
}
} else if self >= 1000 {
let i = Double(self) / 10000
if "\(round(i * 100) / 10)K".contains(".0") {
return "\(round(i * 100) / 10)K".replacingOccurrences(of: ".0", with: "")
} else {
return "\(round(i * 100) / 10)K"
}
} else {
return "\(self)"
}
}
}
// 使い方
print(11146.calcNumericalValue()) // 11.1K
おわり
コードが汚いですね
おそらくextensionで引数を取らない場合にfuncを使うのは良くないと思うんですよね
リファクタリングしてくれる方がいれば編集リクエストください