60 lines
1.5 KiB
Swift
60 lines
1.5 KiB
Swift
//
|
|
// Decimal.swift
|
|
// PlusBank
|
|
//
|
|
// Created by Valentin Titov on 03.03.2021.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
extension Decimal {
|
|
var intValue: Int {
|
|
return (self as NSDecimalNumber).intValue
|
|
}
|
|
|
|
var doubleValue: Double {
|
|
return (self as NSDecimalNumber).doubleValue
|
|
}
|
|
|
|
func formatWith(currency: CurrencyType) -> String {
|
|
currencyFormatted(currency)
|
|
}
|
|
}
|
|
|
|
extension Decimal {
|
|
|
|
func currencyFormatted(_ currency: CurrencyType) -> String {
|
|
let value = self * 100.0
|
|
let floatValue = (value as NSDecimalNumber).floatValue
|
|
let intValue = Int(floatValue)
|
|
var stringValue: String = String(intValue)
|
|
while stringValue.count < 3 {
|
|
stringValue.insert("0", at: stringValue.startIndex)
|
|
}
|
|
var result: String = currency.symbol
|
|
result.insert(" ", at: result.startIndex)
|
|
var cents: String = String(stringValue.removeLast())
|
|
cents.insert(stringValue.removeLast(), at: cents.startIndex)
|
|
result = cents + result
|
|
result.insert(",", at: result.startIndex)
|
|
let characters: [Character] = Array(stringValue) as [Character]
|
|
var j = 1
|
|
for i in (0..<characters.count).reversed() {
|
|
let character = characters[i]
|
|
result.insert(character, at: result.startIndex)
|
|
if j%3 == 0, i != 0 {result.insert(" ", at: result.startIndex)}
|
|
j += 1
|
|
}
|
|
return result
|
|
}
|
|
}
|
|
|
|
extension String {
|
|
var decimalValue: Decimal? {
|
|
let formattedStr =
|
|
replacingOccurrences(of: " ", with: "")
|
|
.replacingOccurrences(of: ",", with: ".")
|
|
return Decimal(string: formattedStr)
|
|
}
|
|
}
|