python奇怪的運算規則

2021-06-20 21:48:31 字數 676 閱讀 3464

今天做了乙個題,輸入乙個數,然後將其反轉,比如123 轉成321,-123轉成-321

這題本來用c++寫就幾句話:

class solution 

return res;

}};

但是如果用python這樣寫就成了死迴圈:

class solution:

# @return an integer

def reverse(self, x):

res = 0

while x != 0:

res = res*10 + x%10

x /= 10

return res

s = solution()

print s.reverse(-123)

除錯發現,-123%10在python裡面不是3,而是7,x /= 10,得到-13,-2,-1,-1,-1......然後就這麼死迴圈了。

-1~-10  /10 都得到-1, -11~-20  /10 都得到-2,所以,python除法是向下捨入,而不是像c++那樣向0捨入。

取模也是,-123%10得到的是7,因為-123比下乙個整除10的數-130大7,python永遠往下看,也是有一定道理的吧。 

奇怪的Double運算

今天測試同學反饋有乙個執行了很久的程式,最近的崩潰率很高,通過日誌查詢發現,這是乙個查詢進度的介面,進度結果的精度是小數點後兩位。但是日誌中卻有很多的超過這個精度的結果,簡化了一下 1 double progress 0.07000000000001d 2 decimalformat df new ...

Python 進製的轉換 位運算規則

binary 二進位制 octal 八進位制 hexadecimal 十六進製制 使用int 其他進製資料,進製 返回資料對應的十進位制,其中資料要用字串形式 注意事項 資料不可以加形如的代表進製的字元 int 10000000 2 128,2進製轉換為10進製 int 200 8 128 8進製轉...

Python進製的轉換 位運算規則

binary 二進位制 octal 八進位制 十六進製制 hexadecimal 使用int 其他進製資料,進製 返回資料對應的十進位制,其中資料要用字串形式 注意事項 資料不可以加形如的代表進製的字元 int 10000000 2 128,2進製轉換為10進製 int 200 8 128 8進製轉...