swift - NSNumberFormatter PercentStyle decimales
locale swift (2)
Estoy usando Swift
let myDouble = 8.5 as Double
let percentFormatter = NSNumberFormatter()
percentFormatter.numberStyle = NSNumberFormatterStyle.PercentStyle
percentFormatter.multiplier = 1.00
let myString = percentFormatter.stringFromNumber(myDouble)!
println(myString)
Salidas del 8% y no del 8,5%, ¿cómo obtendré una salida del 8,5%? (Pero solo hasta 2 decimales)
Con Swift 4.2, NumberFormatter
tiene una propiedad de instancia llamada minimumFractionDigits
. minimumFractionDigits
tiene la siguiente declaración:
var minimumFractionDigits: Int { get set }
El número mínimo de dígitos después del separador decimal permitido como entrada y salida por el receptor.
NumberFormatter
también tiene una propiedad de instancia llamada maximumFractionDigits
. maximumFractionDigits
tiene la siguiente declaración:
var maximumFractionDigits: Int { get set }
El número máximo de dígitos después del separador decimal permitido como entrada y salida por el receptor.
El siguiente código de Patio de juegos muestra cómo usar minimumFractionDigits
y maximumFractionDigits
para establecer el número de dígitos después del separador decimal cuando se usa NumberFormatter
:
import Foundation
let percentFormatter = NumberFormatter()
percentFormatter.numberStyle = NumberFormatter.Style.percent
percentFormatter.multiplier = 1
percentFormatter.minimumFractionDigits = 1
percentFormatter.maximumFractionDigits = 2
let myDouble1: Double = 8
let myString1 = percentFormatter.string(for: myDouble1)
//let myString1 = percentFormatter.string(from: NSNumber(value: myDouble1)) // also works
print(String(describing: myString1)) // Optional("8.0%")
let myDouble2 = 8.5
let myString2 = percentFormatter.string(for: myDouble2)
print(String(describing: myString2)) // Optional("8.5%")
let myDouble3 = 8.5786
let myString3 = percentFormatter.string(for: myDouble3)
print(String(describing: myString3)) // Optional("8.58%")
Para establecer el número de dígitos de fracción use:
percentFormatter.minimumFractionDigits = 1
percentFormatter.maximumFractionDigits = 1
Establezca mínimo y máximo a sus necesidades. Debería ser autoexplicativo.