LoginSignup
17
16

More than 5 years have passed since last update.

Swift のゼロ除算

Last updated at Posted at 2015-09-15

これはなに

Swift のゼロ除算は型によって結果が異なることを知ったので共有させていただきます。
環境: Xcode 7 GM seed (Swift2.0), Playground

ゼロ除算

以下の型で試しました。

  • Int
    • 変数
    • 直接
  • Float
    • 変数
  • Double
    • 変数
    • 直接

0.0 とか直接書くとデフォルトで Double になるので Float の直接はやりませんでした。

結果

  • Int
    • 変数:実行時エラー Execution was interrupted, reason: EXC_BAD_INSTRUCTION(code=EXC_I386_INVOP, subcode=0x0).
    • 直接1000/0: 実行時エラー Division by zero
  • Float
    • 割られる数によって結果が異なる、変数でも直接でも結果は同じ
  • Double
    • 割られる数によって結果が異なる、変数でも直接でも結果は同じ

Float, Double の計算結果

割られる数が 0 か 正 か 負 かで結果が変わります。

  • 0.0 / 0.0 = NaN
  • 1000.0 / 0.0 = ∞
  • -1000.0 / 0.0 = -∞

まとめ

  • Float, Double の場合は実行時エラーにならないので注意
  • Intの場合は変数で計算するのと直接計算するのでは計算結果、エラーが異なる

オーバーフロー演算子

ちなみに Swift にはオーバーフロー演算子という、オーバーフローしてもエラーにならない演算子というのがあります。
&+, &-, &* の三種類があります。
除算 &/ と余剰 &% も昔はありましたが、なくなりました。

今回試した Playground

参考

17
16
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
16