Invoice Generator 顯示的總額精確到每一分,因為每個計算都在你的瀏覽器中以整數分(integer cents)進行,而不是以浮點運算中的小數美元進行。浮點數運算是計算機、試算表以及許多線上發票表單中,小計、稅額列或總計出現一分高低誤差的最常見單一原因。將每個值儲存為整數分,便能從源頭消除這種捨入誤差,因此你的明細項目加總、套用於該總額的稅額,以及你減去的任何固定折扣,最終都能對齊到一個乾淨的數字。頁面上的預覽與下載的 PDF 一行對一行完全一致,所以你在輸入時看到的總額,正是你客戶在附加檔案中收到的總額。任何階段都不會上傳資料到伺服器,不需要註冊帳號,PDF 也在本機產生,沒有浮水印或第三方品牌標示。

are the totals accurate when using invoice generator
使用發票產生器時,總額是準確的嗎?

為什麼發票總額有時會算錯

大多數發票錯誤不是公式錯誤,而是捨入錯誤,而捨入錯誤源自於電腦儲存小數的方式。像 7.95 這樣的值無法在二進位浮點數中精確表示,因此程式儲存的是一個非常接近 7.95 的數值,並在你讀取時再次捨入。當你把許多這種「接近值」加在一起時,微小的誤差會累積起來,理論上應該以 .00 結尾的總和,最後卻以 .01 收尾。試算表透過只顯示兩位小數(內部卻儲存更多位數)來掩飾這個問題,這就是為什麼匯出的 CSV 會和螢幕上顯示的不一致。

在真實的帳務工作流程中,還會出現另外三個誤差來源:

  • 忽略運算順序的折扣公式。 先扣折扣再算稅,與先算稅再扣折扣,會產生不同的稅基;在不同發票之間切換這兩種順序,會讓總額對不起來。
  • 悄悄改變數字運算的數量輸入錯誤。 在試算表儲存格中,單價的小數點位置打錯並不容易察覺,但會影響每一個下游項目的金額。
  • 在工具之間手動重新輸入。 把一個程式的總額手打到另一個程式,是最快引入一分或兩分誤差的方式,而且通常是客戶比你早發現。

這些並不是一般意義上的人為操作錯誤,而是大多數通用軟體用這種方式進行小數運算時,可預見的失敗模式。

發票產生器如何保持數字精準

Invoice Generator 透過全程以整數分(integer cents)進行運算,來避開捨入問題。每個明細項目將單價以分儲存,乘以數量(單位也是分),並以分累加小計。稅額是根據小計的分數值計算,固定折扣也是以分扣除。只有在最終數字必須顯示或寫入 PDF 時,才會被格式化回美元與分,而這個格式化步驟不會損失精度,因為底層的值從來就沒有精度可言。

驅動即時預覽的同一段 JavaScript 程式碼也負責產生 PDF,因此瀏覽器中的數字與列印出來的數字來自同一個計算。你能在預覽中讀到的數字,就能直接開立到 PDF 中。折扣欄位也設有上限:如果你輸入的折扣大於應付金額,工具會把折扣限制在應付金額,讓總額永遠不會低於零。光是這一條規則,就能避免一類在手寫發票試算表中真正常見的錯誤。

建立一張總額準確的發票

  1. 在你的瀏覽器中開啟 Invoice Generator。無需註冊,無需安裝,所有資料都不會離開你的裝置。
  2. 先在 From(賣方)區塊填入你的公司名稱與地址,再到 Bill To(買方)區塊填入客戶資料。設定發票號碼(預設為 INV-001),從日期選擇器中挑選開立日期與到期日,並選擇與你開立方式相符的貨幣符號。
  3. 為每個產品或服務新增一個明細項目。輸入描述、數量(支援整數或小數,例如 1.5 小時都可以),以及單價。需要更多列時使用 Add item 按鈕,想刪除某一列則使用該列上的移除按鈕。
  4. 以百分比輸入你的稅率,若有固定折扣也一併輸入金額。小計、稅額、折扣與總額會在你輸入時即時重新計算,你可以看到每個數值逐步確定下來。
  5. 在右側的即時預覽中核對總額。一切確認無誤後,點擊 Download PDF,即可儲存一份乾淨、可立即列印的發票,該發票是在你的瀏覽器本機產生的。

若想用一個實際例子來驗算數字,想像一張發票上共有三個明細項目:

描述數量單價金額
諮詢時數2$75.00$150.00
軟體授權1$120.00$120.00
設定用元件5$3.50$17.50

小計是各金額的加總:$150.00 + $120.00 + $17.50 = $287.50。以 8% 計算 $287.50 的稅額為 $287.50 × 0.08 = $23.00。折扣前的應付金額為 $287.50 + $23.00 = $310.50。$20.00 的折扣使最終總額為 $310.50 − $20.00 = $290.50。由於底層數值都是整數分而非浮點美元,每一步運算都精確無誤。

即時預覽能讓你看到什麼

Invoice Generator 頁面上的預覽面板並非示意圖,而是 PDF 將使用的相同版型,並且在同一時間由相同的數字構成。你會看到 From 與 Bill To 區塊、發票號碼與日期、一個包含描述、數量、單價與金額欄位的明細表格,以及位於右下角、列出小計、稅額、折扣與總額的摘要區。你在左側表單欄位中新增的任何內容,都會在同一個更新週期內出現在右側的預覽中。

由於 PDF 與預覽是由同一段程式碼產生,你可以把預覽當成點擊 Download 之前的最後一道檢查。將小計與你自己的明細運算比對,確認稅額列與你輸入的稅率相符,並確認折扣列顯示的是你預期的金額。如果你設定的折扣大於應付金額,預覽會把折扣限制在應付金額,並把總額固定為零,這代表工具在告訴你上限機制已啟動,而不是默默地算錯金額。

送出前需要留意的限制

精準的數字只是可信賴發票的一部分。這個特定工具有一些限制值得事先了解,才不會在送出時才驚訝。

項目工具能做什麼工具不能做什麼
貨幣顯示四種符號之一:$、£、€、¥不做它們之間的匯率換算
品牌標示乾淨的純文字版型,沒有浮水印此版本不支援上傳標誌或圖片
字型與字元始終能正確顯示,即使是罕見字元也一樣非拉丁字元與 emoji 會被替換,而不會原樣列印
隱私所有處理都在本機執行,包括 PDF沒有雲端備份或裝置同步,所以請自己儲存 PDF
連線頁面載入完成後即可離線使用不會即時向稅務機關或客戶資料庫進行驗證

四種貨幣符號始終能正確顯示,因為它們屬於標準字型的一部分。貨幣選擇器只會改變顯示的標籤,不會去查詢匯率或換算金額,因此不論你選哪個符號,一張 $100 的發票都仍然是 $100。如果你的客戶以不同貨幣付款,請自行處理換算。如果你需要在 PDF 上加上公司標誌,請先產生發票,再在任何 PDF 編輯器中加上標誌,因為下載的檔案是標準的 PDF,沒有浮水印或第三方品牌標示,能乾淨地接受外部編輯。

若想進一步閱讀如何在可列印文件中讓總額正確的相關內容,這份關於建立總額正確的付款收據的指南也採用了相同的整數分作法來處理收據。