ios - Remove Decimal places from Currency? -
i have following example:
// currencies var price: double = 3.20 println("price: \(price)") let numberformater = nsnumberformatter() numberformater.locale = locale numberformater.numberstyle = nsnumberformatterstyle.currencystyle numberformater.maximumfractiondigits = 2
i want have currency output 2 digests. in case currency digests 0 want not displayed. 3,00 should displayed as: 3
. other values should displayed 2 digests.
how can that?
you have set numberstyle decimalstyle able set minimumfractiondigits property depending if double or not follow:
extension double { var formatted: string { let numberformater = nsnumberformatter() numberformater.locale = nslocale.currentlocale() numberformater.numberstyle = nsnumberformatterstyle.decimalstyle numberformater.maximumfractiondigits = 2 numberformater.minimumfractiondigits = self - double(int(self)) == 0 ? 0 : 2 return numberformater.stringfromnumber(self) ?? "" } } 3.0.formatted // "3" 3.12.formatted // "3.12" 3.20.formatted // "3.20" var price = 3.20 println("price: \(price.formatted)")
edit
extension double { var currency: string { let numberformater = nsnumberformatter() numberformater.locale = nslocale.currentlocale() numberformater.numberstyle = nsnumberformatterstyle.currencystyle let result = numberformater.stringfromnumber(self) ?? "" return result.hassuffix(".00") || result.hassuffix(",00") ? result[result.startindex..<result.endindex.predecessor().predecessor().predecessor()] : result } } 3.0.currency // "$3" 3.12.currency // "$3.12" 3.2.currency // "$3.20" var price = 3.0 println("price: \(price.currency)")
Comments
Post a Comment