[Swift] 計算結果がオーバーフローになる場合に備える

Swiftでは計算結果がオーバーフローするとExceptionが発生してプログラムが停止してしまいます。
そんな時のために、計算結果がオーバーフローするか調べる関数があります。

1
2
3
4
5
let val  = 1000_000_000_000_000_000
let val2 = 1000_000_000_000_000_000
let (partialValue, overflow) = val.multipliedReportingOverflow(by: val2)
print("partialValue: \(partialValue) overflow: \(overflow)")
// partialValue: -5527149226598858752 overflow: true

multipliedReportingOverflowで計算結果(オーバーフローしない場合は正しい値), オーバーフローするかが取得できます。
掛け算だけでなく、足し算, 引き算, 割り算にも同様のメソッドが用意されています。
手元のマシンで100万回ぐらい足し算した結果では普通に足し算した場合と実行速度に大きな差は出ませんでした。

参考URL

0 件のコメント :

コメントを投稿