关于Python3与Swift“%”运算符不同特性小记

在用Swift写算法的时候发现自己用Python3写的正常运行的算法代码,使用Swift复刻后无论如何都有数据上的错误,仔细研究才发现是Python3和Swift的“%”运算符的实现效果并不完全相同,做个笔记。

虽然两种语言在正数上的余运算结果相同但负数运算却相差甚远。

//Python3
num = -10
num %= 4
print(num)
//运算结果为 2
//Swift
var num = -10
num %= 4
print(num)
//运算结果为 -2

虽然看起来Python3是取绝对值后再进行运算得出2,而Swift是对值运算完后取负但实际上不是如此。

//Python3
num = -5
num %= 4
print(num)
//运算结果为 3
//Swift
var num = -5
num %= 4
print(num)
//运算结果为 -1

Python3的"%"运算实际效果是-5 -%运算-> -1 -与被余数相加-> 3
而Swift则是-5 -%运算-> -1
不知道自己有没有理解错误。

你可能感兴趣的:(关于Python3与Swift“%”运算符不同特性小记)