マイナスの剰余演算について情報が少なかったのでメモ。
目次
Swift3の剰余演算
Swiftでは%
演算子がある。一般的には剰余演算と言われるものだ。
しかし、Swiftの%
演算子は負の数に適用すると思いがけない結果になった。
let remain = -1 % 10
print(remain) // Print -1
こうなる。負の数が返されるのだ。Python3では、
remain = -1 % 10
print(remain) # Print 9
となり、正の数9が返される。
Swift3の%演算子
調べてみると、仕様らしい。負の数においては剰余演算ではないらしい。
The Swift Programming Language (Swift 3.1): Basic Operators中のRemainder Operator
節に記載があった。
moduloでなく、remainderである、とのこと。
回避策
なので、負の数でPython3的な返却値を期待してはいけない。回避策は以下。
let dividend = -1
let divisor = 10
var remain = dividend % divisor
if remain < 0 {
remain += divisor
}
print(remain) // Print 9
Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plus)
posted with amazlet at 17.05.08
石川 洋資 西山 勇世
技術評論社
売り上げランキング: 19,129
技術評論社
売り上げランキング: 19,129
コメント