number swift nsnumberformatter

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.