【Swift】小数点の切り上げ/切り捨て/四捨五入方法!第2位などの桁数

この記事からわかること

  • Swift浮動小数点数型の値を切り上げ/切り捨て/四捨五入する方法
  • ceil/floor/round関数の使い方
  • 小数点第2位や3位など任意の桁数丸め処理
  • 文字列型変換して小数点の表示桁数調整する方法
  • String(format:)の使い方

index

[open]

\ アプリをリリースしました /

ふるログ

ふるさと納税管理アプリ-ふるログ-

無料posted withアプリーチ

Swiftで浮動小数点数型の値を切り上げ/切り捨て/四捨五入する方法をまとめていきたいと思います。

Swiftで数値を扱うデータ型の違い

Swiftでは数値を扱うデータ型は複数存在します。

Swiftの数値データ型

型名 概要
Int 整数型 23
Float 32ビット浮動小数点数型(小数点6桁まで) 3.141593
Double 64ビット浮動小数点数型(小数点15桁まで) 3.141592653589793

数値を扱うという点では同じですが、データ型が異なるので許容していない範囲の数値を格納するとエラーになってしまいます。浮動小数点数型に関しては許容外の桁数を渡されると自動で収まる桁数に丸められます

let numI:Int = 3.141592653589793238462643 // エラー
let numF:Float = 3.141592653589793238462643 // 許容できる範囲に自動で丸められる
let numD:Double = 3.141592653589793238462643 // 許容できる範囲に自動で丸められる
Int:Cannot convert value of type 'Double' to specified type 'Int'
Float:3.141593
Double:3.141592653589793

FloatとDoubleの違い

同じ浮動小数点数型であるFloatDoubleの違いは許容できる桁数の違いです。変数初期格納時に許容外の桁数を渡しても問題はありませんが異なるデータ型を受け入れられるわけではありません

let numF:Float = 3.141592653589793238462643
var numD:Double = 3.141592653589793238462643

numD = numF // エラー
Cannot assign value of type 'Float' to type 'Double'

浮動小数点数型の値を丸め処理する関数

Swiftでは浮動小数点数型の値に対して小数点以下を丸めることができる関数が用意されています。

let num:Double = 5.6
let ceilNum = ceil(num)    // 6
let floorNum = floor(num)  // 5
let roundNum = round(num) // 6

小数点第2位や3位など任意の桁数で丸め処理

Swiftで用意されている関数は小数点の位の丸め位置を指定することはできません。例えば小数点第2位で四捨五入をしたい時は「10倍してから丸めて10で割る(桁をずらす)」ことで桁解決できます。

var num:Double = 3.141592653589793238462643
let numCeil = ceil(num * 10)/10       // 3.2
let numFloor = floor(num * 100)/100   // 3.14
let numRound = round(num * 1000)/1000 // 3.142

小数点の位置をずらすことで任意の桁数で丸め処理を行うことができます。またそれにより表示させたい小数点以下の桁数をコントロールすることもできます。

文字列型に変換して小数点の表示桁数を調整

小数点以下の桁数の表示数を調整する際に便利なのがString(format:)イニシャライザです。引数には表示させたい桁数の形式と対象の値を渡します。

init(
    format: String,          // 桁数
    _ arguments: CVarArg...  // 対象の値
)
var num:Double = 3.141592653589793238462643
print(String(format: "%.1f", num)) // 3.1
print(String(format: "%.3f", num)) // 3.142
print(String(format: "%.5f", num)) // 3.14159

表示させたい小数点の桁数の形式」はフォーマット指定子と呼ばれる形式を指定します。その中で浮動小数点数型を指定する際は%.nf(nに桁数)で指定します。

数値の0埋め

ちなみにString(format:)イニシャライザで%0ndを使うと数値の0埋めをすることもできます。指定した桁数に足りていない桁に0を入れてくれます。

var num:Int = 1
print(String(format: "%02d", num)) // 01
print(String(format: "%03d", num)) // 001
print(String(format: "%05d", num)) // 00001

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

私がSwift UI学習に使用した参考書

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

自作iOSアプリ

\ アプリをリリースしました /

mapping

自分だけの地図を作ろう!-mapping-

無料posted withアプリーチ

割り勘アプリ-bill-

旅行におすすめ!
割り勘アプリ-bill-

無料posted withアプリーチ

Imakoko

現在地を取得するアプリ!Imakoko

無料posted withアプリーチ

ふるログ

ふるさと納税管理アプリ-ふるログ-

無料posted withアプリーチ

Remind-シンプル通知アプリ-

シンプル通知アプリ-Remind-

無料posted withアプリーチ

CLIPURL

好きな記事をクリップしよう!-CLIPURL-

無料posted withアプリーチ

記録カレンダー

続けたを可視化できるアプリ!記録カレンダー

無料posted withアプリーチ

CART-共有できるお買い物リスト-

CART-共有できるお買い物リスト-

無料posted withアプリーチ

Githubにて
iOSアプリのソースコードを公開中!

自作Webアプリ

子育て知識共有サイト-mikata-

子育て知識共有サイト-mikata-

フレームワーク:Laravel/Vue.js

作成の流れQiita「Laravel×Vue.jsを使って初めてWebアプリを自作しました!」

感想:初めて作成したWebアプリです!メールアドレスでの会員登録や質問投稿、回答やコメント、いいねやフォローなどSNSに近い機能を実装してみました。レビューや修正すべきポイントなどを教えていただけると嬉しいです!

New Article

index