剛才客戶打電話過來說系統有問題,分析他發過來的日志后發現原來程序中用Integer.parserInt的方法把字符串形式的金額解析為整形,以前金額較小沒有發現問題,今天發了一筆大額交易,總金額是2150220201,正好比Integer在32位平臺上的最大值2147483647大一點點,所以發生了轉換異常。
經驗再次提醒我們:
為了防止精度、大金額溢出等問題,禁止在涉及到金額的地方使用integer、double、float等原始類型,統一使用BigDecimal、BigInteger。在python中也有對應的類型decimal類型用來進行不限精度的。