2017-09-11 14 views
0

ウェブサービスから0.097または0.034のような特定の倍数をウェブサービスから取得しています。だから私が0.56や0.5のような特定の数を得ているなら、私は0.56にゼロを、0.5に2つのゼロを加える必要がある。どのようにswift3でこれを行うには? 現在、私は次のことを行っています:swift3の10進数文字列の末尾にゼロを追加する方法

class func appendString(data: Int) -> String { 
    let value = data 
    let formatter = NumberFormatter() 
    formatter.minimumFractionDigits = 3 // for float 
    formatter.maximumFractionDigits = 3 // for float 
    formatter.minimumIntegerDigits = 1 
    formatter.paddingPosition = .afterPrefix 
    formatter.paddingCharacter = "0" 
    return formatter.string(from: NSNumber(floatLiteral: Double(value)))! 
    } 

どのように考えていますか?

+0

おそらくこれです。https://stackoverflow.com/questions/24051314/precision-string-format-specifier-in-swift – kometen

答えて

1

それは常に画分

は、次の例を参照してくださいを無視しますので、あなたが、int型に[スウィフト3.1]をデータ入力を渡している問題

func formatNumber(_ number: Double) -> String? { 

    let formatter = NumberFormatter() 
    formatter.minimumFractionDigits = 3 // minimum number of fraction digits on right 
    formatter.maximumFractionDigits = 3 // maximum number of fraction digits on right, or comment for all available 
    formatter.minimumIntegerDigits = 1 // minimum number of integer digits on left (necessary so that 0.5 don't return .500) 

    let formattedNumber = formatter.string(from: NSNumber.init(value: number)) 

    return formattedNumber 

} 

let formattedNumber = formatNumber(0.5) 
print(formattedNumber) // Optional("0.500") 
0
あなたのコードに

ちょうど少数の小さな変更:

func appendString(data: Double) -> String { // changed input type of data 
    let value = data 
    let formatter = NumberFormatter() 
    formatter.minimumFractionDigits = 3 // for float 
    formatter.maximumFractionDigits = 3 // for float 
    formatter.minimumIntegerDigits = 1 
    formatter.paddingPosition = .afterPrefix 
    formatter.paddingCharacter = "0" 
    return formatter.string(from: NSNumber(floatLiteral: value))! // here double() is not required as data is already double 
} 

print(appendString(data: 0.5)) // 0.500 
関連する問題