web-dev-qa-db-ja.com

NSNumberFormatter PercentStyleの小数点以下の桁数

私は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)

8.5%ではなく8%を出力します。8.5%を出力するにはどうすればよいですか? (ただし、小数点第2位まで)

25
Fred Faust

小数桁数を設定するには、次を使用します。

percentFormatter.minimumFractionDigits = 1
percentFormatter.maximumFractionDigits = 1

必要に応じて最小値と最大値を設定します。自明である必要があります。

36
zisoft

Swift 5の場合、NumberFormatterには minimumFractionDigits というインスタンスプロパティがあります。minimumFractionDigitsには次の宣言があります。

var minimumFractionDigits: Int { get set }

レシーバーによって入出力として許可される、小数点以下の最小桁数。


NumberFormatterには maximumFractionDigits というインスタンスプロパティもあります。 maximumFractionDigitsには次の宣言があります。

var maximumFractionDigits: Int { get set }

レシーバーが入出力として許可する小数点以下の最大桁数。


次のPlaygroundコードは、minimumFractionDigitsを使用するときに、小数点記号の後の桁数を設定するためにmaximumFractionDigitsおよび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)
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%")
7
Imanou Petit

疑問がある場合は、Appleのドキュメントで 最小小数桁数最大小数桁数 を確認してください)これで、前に追加する必要があるこれらの行が得られます番号のフォーマット:

numberFormatter.minimumFractionDigits = 1
numberFormatter.maximumFractionDigits = 2

また、 8.5%を得るには入力が0.085である必要があります にも注意してください。これは multiplierプロパティにより発生 で、パーセントスタイルはデフォルトで100に設定されています。

0
gbread