読者です 読者をやめる 読者になる 読者になる

Pebble's Diary

プログラマーの作業メモ

swiftで小数点値フォーマット

swift

C言語での小数点値フォーマット指定をswiftで実現する方法を調べました。
C言語では小数点以下の幅を指定した場合、一つ下の桁が四捨五入されます。
C

printf( "%.2f\n", 12.3456 );  // 12.35
printf( "%.2f\n", 12.0 );  // 12.00

swift

let num = NSNumber(double:val)
var formatter = NSNumberFormatter()
formatter.numberStyle = NSNumberFormatterStyle.DecimalStyle
formatter.maximumFractionDigits = 2
formatter.positiveFormat = "0.00"
formatter.roundingMode = NSNumberFormatterRoundingMode.RoundHalfUp // 四捨五入
var str:String = formatter.stringFromNumber(num)!

swiftめっちゃ長い。。なお、NSNumberFormatterのインスタンス生成のコストも馬鹿にならないので、 頻繁に使う場合は、使いまわさないと遅くなりそうです。
NSNumberFormatterでは正の値と負の値の場合でのフォーマットをそれぞれ指定することができて、 たくさん書かなければならない分だけ、C言語よりは機能が充実しています。

参考: Using Number Formatters - Use Your Loaf