這是我參與新手入門的第3篇文章。java
衆所周知,python是一種動態的,解釋性,強類型語言。而js是動態,解釋性,弱類型語言。 兩種語言有不少相似,又有不少差別。本文簡單介紹下負數取餘的問題。python
不知道你們有沒有遇到過負數除法和取餘的時候,從直覺上來講,負數取餘是沒有物理意義的。 在這個問題上不一樣編程語言有不一樣的規定。編程
先來看看py運行%運算的結果。瀏覽器
7%3==1//嗯,你們都同樣。markdown
-7%3==2//emmmmmmmmmmmmm,難道是-7重複加3,加到正數爲止,正好爲2?。編程語言
-7%-3==-1//腫麼肥事啊,spa
7%-3==-2 // 發生甚麼事了啦,一直重複-3,小於0爲止正好-2?code
來看看瀏覽器控制檯js的運行結果orm
在符號相同的狀況下運算結果與py相同,但除法與被除數異號竟然不同!!!it
從形式上找規律,py中的餘數的符號與除數一致,而js中結果與被除數的符號保持一致。
這兩種差別,實際上來自於他們對除法的規定不一樣。餘數=被除數-(被除數/除數)x除數。由於商不一樣,因此餘數不一樣。
有2種除法模式:
例子中:-7%3中,商爲-2.333333,向下取整得-3,因此模就爲-7 -(-3)x 3 => -7 -(-9)==2.
-7%3,商-2.333333靠近0取整得-2,因此餘數爲-7-(-6)==-1.
好了,以這種計算模式去看,徹底能解釋通了。
總結py就很特立獨行。雖然生產中可能遇不到這個問題,但仍是能夠了解下。
若有錯誤,歡迎指正。