search
LoginSignup
2

posted at

【Swift】数字の省略表記

数字の省略表記とは?

IMG_0372.jpg

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を使うのは良くないと思うんですよね

リファクタリングしてくれる方がいれば編集リクエストください

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2