C言語での小数点値フォーマット指定をswiftで実現する方法を調べました。
C言語では小数点以下の幅を指定した場合、一つ下の桁が四捨五入されます。
C
printf( "%.2f\n", 12.3456 ); // 12.35 printf( "%.2f\n", 12.0 ); // 12.00
swift
let num = NSNumber(value:val) let formatter = NumberFormatter() formatter.numberStyle = .decimal formatter.maximumFractionDigits = 2 formatter.positiveFormat = "0.00" // "0.##" -> 0パディングしない formatter.roundingMode = .halfUp // 四捨五入 // .floor -> 切り捨て var str:String = formatter.string(from: num)!
swiftめっちゃ長い。。なお、NumberFormatterのインスタンス生成のコストも馬鹿にならないので、
頻繁に使う場合は、使いまわさないと遅くなりそうです。
NumberFormatterでは正の値と負の値の場合でのフォーマットをそれぞれ指定することができて、
たくさん書かなければならない分だけ、C言語よりは機能が充実しています。