[Swift] Double での 剰余計算

Swift

Swift では、Double に %(剰余計算) が使えなくなっていました。代替の方法を説明します。

整数値で揃えたい時もそうですが、Doubleの数列を使っていると、0.5刻みで揃えたいとかあります。

データがあって、そのデータを表示するための表示域を決めるときがその1つです。

たとえば、、0.3, 0.4, 0.7, 0.9, 1.3 というようなデータを表示するときに、[0.0,1.5]を表示値域としたい というようなケースです。

0.5刻みで数値を含む範囲を計算する

ちょっとごちゃごちゃしてますが、剰余計算を自前でしているだけです。

0.5 での剰余計算をして、切り捨てているため、境界上にデータがあると、グラフとしては見づらくなってしまうために、表示域を -0.5, +1.5 しています。

厳密に範囲を調整したい時は、ちょうど割り切れたかどうかの判定を加える必要があります。(ただ、Double の数値では、ちょうど割り切れるの定義が必要ですよね)

extensionにしておくと便利

以下のようなextensionにしてたまに使ってます。

代替メソッドも用意されてました

普通に調べれば載ってます・・・

truncatingRemainder

Apple のドキュメントは、こちら

似たメソッドもあります

少し動作のことなるメソッドも作られてました。

remainder

truncatingRemainder との動作の違いは、剰余の絶対値をできるだけ小さくするために、オーバーシュートもすることです。(剰余として負の数を取り得ます)

example code

2つ目の例は、剰余の絶対値を小さくするために、剰余が負になっているのがわかります。

まとめ

Swift での Double の剰余演算
  • % の代替は、truncatingRemainder が用意されている
  • 剰余の絶対値を小さくする remainder も用意されていて、ケースによっては便利

説明は以上です。
不明な点やおかしな点ありましたら、ご連絡いただけるとありがたいです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です