Tablora · 資料庫
用精確小數檢查0.10加0.20
用十進位運算核對0.10加0.20是否剛好等於0.30,讓載明的合計在比對時不受浮點數顯示誤差干擾。
為什麼0.1加0.2看起來不對
許多程式用二進位浮點數儲存數字,而0.1和0.2在這種格式下無法精確表示。把它們相加,儲存的結果會比0.3多一點點;視格式而定,你可能會看到0.30000000000000004,或比較結果顯示兩個值不相等。在對帳時,這種誤差看起來就像一個其實不存在的差異。
小數合計核對工具避開了這個問題。它把每個值當成十進位字串讀取,把所有值放大到相同的小數位數,再當成整數相加,所以0.10加0.20剛好得到0.30。
輸入各行
- 把金額輸入或貼到「每行一個值」。空行會被忽略,值前後的空格會被去掉。
- 使用標準的十進位寫法:可選的前置負號、數字,以及小數部分前的句點。分組逗號、小數逗號、正號或貨幣標記都會被拒絕。
- 把要核實的數字用同樣的寫法填入「預期合計」。
- 按下「計算」,查看「計算合計」、「預期合計」、「差值」和「合計一致」。
0.10和0.20的結果
值為0.10和0.20、「預期合計」為0.30時,「計算合計」為0.30,「差值」為0.00,「合計一致」顯示「是」。結果保留兩位小數,因為這是所有輸入值和預期合計中最多的小數位數。
「差值」一律是「計算合計」減去「預期合計」,所以差值為負,表示輸入的各行不到載明的數字。
從實際表格準備數值
從對帳單複製出來的金額,很少是標準格式。請先用數值格式統一工具處理這一欄,選擇文件使用的小數分隔符號和數位分組符號,再把轉換後的值複製到核對工具。被格式統一工具留待檢查的值,還不能拿來加總;在相信合計之前,請先解決它。
核對工具只會對你輸入的內容做精確計算,僅此而已。它不換算幣別、不套用稅務或進位規則,也不會告訴你是否每筆記錄都已輸入。
核對工具拒絕的輸入
- 帶分組逗號的1,234.50,或使用小數逗號的1234,50:請先用數值格式統一工具轉換。
- 帶正號的+5.00:請輸入5.00。
- 沒有前導零的.50:請輸入0.50。
- 括號中的(2.50):請輸入-2.50。
- 只要有任何一項,整個計算就會停下並顯示「請檢查輸入的數值後再試。」,所以有問題的行絕不會被悄悄略過。
輸入值
- 每行一個值
- 0.10 0.20
- 預期合計
- 0.30
結果
- 計算合計
- 0.30
- 差值
- 0.00
- 合計一致
- 是