選單

薪資的幣別和週期怎麼寫

薪資欄位若缺少幣別與週期就沒有意義,因為同一個數字在兩種週期下差了好幾倍。本文說明薪資組成該怎麼拆、貨幣代碼為什麼比符號可靠,以及換算與隱私的處理原則。

發佈於

  • 測試資料
  • 職業資訊

薪資的幣別和週期是這個主題裡最容易被省略、也最不該省略的兩個屬性。一個沒有幣別的金額無法比較,一個沒有週期的金額無法換算。以下說明薪資欄位該怎麼拆、為什麼要用貨幣代碼,以及換算與隱私上該注意什麼。

薪資欄位為什麼一定要帶幣別和週期?

因為金額本身不攜帶這兩個維度。同一個數字,標成年薪與標成月薪相差十幾倍;同一組數字,標成某一種貨幣與標成另一種貨幣可能相差數倍。少了這兩個屬性,任何比較、排序與統計都會失真。

週期的變化也比想像中多:有以月計、有以年計、有以工時或日計,也有以專案或產出計。這些形式彼此不容易直接比較,因此週期必須是一個獨立的欄位,而不是靠前後文推測。

還有一個常見的錯誤是把週期寫進金額欄位,例如在文字欄位裡寫「每月多少」。這讓資料無法參與計算,也讓格式驗證失去依據。金額、幣別與週期應該是三個各自獨立的欄位。

欄位 內容 為什麼不能省略
金額 實際的數字 單看數字無法判斷規模
幣別 貨幣代碼 少了它,任何比較、排序與統計都會失真
週期 以月計、以年計、以工時或日計,或以專案或產出計 少了它,金額無法換算

總包和基本工資是同一件事嗎?

不是。一份薪資條件通常包含多個部分:固定的基本給付、依表現變動的獎金、依地區或家庭狀況給付的津貼、以及雇主負擔的退休或保險相關項目。這些部分的穩定性與適用條件各不相同。

把它們全部加總成一個數字,會讓比較失去意義:兩份總額相同的條件,可能一份以固定給付為主、另一份以變動獎金為主,風險完全不同。因此紀錄應該保留組成結構,而不是只留一個總額。

還有一個容易混淆的是「雇主成本」與「員工實得」。兩者之間的差額來自稅費與各項扣除,而這些規則因司法轄區而異,也因個人情況而異。系統不應該內建計算規則,只應該保留組成欄位,把計算交給需要的流程。

為什麼要用貨幣代碼而不是符號

因為符號有歧義。同一個符號可能對應多種貨幣,不同地區對同一個符號的讀法也不一樣;在小數位數與千分位習慣不同的情況下,單看符號很容易誤讀。

貨幣代碼則是一組固定長度的字母標識,沒有歧義、方便比對與排序,也適合當作資料庫欄位。顯示時再依介面語言與地區習慣轉成符號或當地寫法,這樣儲存與呈現分開,兩邊都不受限。

同時要注意小數位的差異。不是所有貨幣都以兩位小數為慣例,有的沒有小數、有的使用三位。把金額硬存成固定兩位小數,會在某些貨幣上產生不存在的精度,或在另一些貨幣上損失精度。

換算為什麼一定要記基準日期

因為不同貨幣之間的相對價值會變動。今天換算出來的金額,和下個月換算出來的結果不會相同;若紀錄裡只有換算後的金額而沒有當時的比率與日期,日後就無法還原,也無法判斷這個數字當時代表什麼。

務實的做法是把換算視為一種帶時間戳的衍生結果,而不是原始資料。原始資料是金額、幣別與週期;換算結果則附上使用的比率來源與基準日期,並允許重算。

還有一點是不要把換算後的數字回寫成原始金額。一旦回寫,原始資訊就消失了,之後任何重新換算都會建立在一個已經失真的基礎上。

薪資資料的隱私邊界

薪資屬於敏感的個人資訊,在許多地區受到較嚴格的處理要求。具體的保存期限、告知義務與跨境傳輸限制因司法轄區而異,實務上必須依服務方與當地的規範決定,不能一概而論。

在系統設計上,可把握幾個原則:薪資欄位應該與一般檔案欄位分開權限;顯示時依角色決定可視範圍;匯出與報表要能遮蔽;日誌與錯誤訊息不該把金額帶出去。

在測試環境裡,薪資樣本應該是合成值,而不是從真實紀錄改寫而來。即使去掉姓名,薪資加上職位與地區往往仍足以指認到特定的人,這就是它比一般欄位更敏感的原因。

本站產生的薪資資料

在本站的職業檔案產生器裡,產生的職業檔案若包含薪資,會以金額、幣別與週期三個欄位一起呈現,方便驗證表單與報表在跨貨幣情境下的行為。想先理解一份完整紀錄的欄位結構,可以讀職業檔案測試資料;招募流程中這些欄位會在哪一步出現,招募表單測試案例怎麼設計有相關說明。

跨地區比較薪資時要留意什麼

第一件事是確認兩邊的週期一致。把以年計的金額和以月計的金額放在同一欄位比較,結果會相差十幾倍,而且看起來毫無異常。比較之前先統一週期,是這類分析最容易被跳過、也最容易出錯的一步。

第二件事是確認兩邊的組成範圍一致。有的紀錄只含基本給付,有的含獎金與津貼;若不先對齊範圍,比對的其實是兩個不同的概念。把組成結構保留下來,就能在比較時明確指定要對齊哪幾個部分。

第三件事是稅費與雇主負擔的處理。相關的計算規則因司法轄區而異,也因個人情況而異,系統不應該內建換算規則。若流程需要呈現扣除後的金額,應該由外部計算並標明其依據與基準日期,而不是在資料層自行推導。

最後是呈現。同一個金額在不同地區的數字格式、千分位與小數符號都不一樣,顯示時應依讀者所在的地區調整,但儲存層不受影響。把顯示與儲存分開,跨地區的比較才不會被格式差異干擾。

給開發者:金額欄位的型別與單位

金額不要用浮點數儲存。以最小單位存整數(例如以分或該貨幣的最小單位),可以避免累加時的精度誤差;若貨幣沒有小數,最小單位就是它本身。小數位數應該跟著幣別走,而不是全域固定。

週期建議用可枚舉的值,並保留一個「其他」選項搭配說明文字,因為以專案或產出計價的形式難以窮舉。幣別用固定長度的代碼,並在驗證層確認它落在允許清單中。

換算相關的欄位要與原始欄位分開存放,並記錄基準日期與比率來源。若流程需要比較不同貨幣的金額,建議在比較時即時換算,而不是事先把結果存成另一個金額欄位。測試樣本要怎麼在版控裡保持穩定,可以參考可重現的測試資料。

下一步

先檢查薪資欄位是不是只有一個金額,若是,先補上幣別與週期再處理比較。接著確認換算結果有沒有記錄基準日期,沒有的話補上,並確認沒有任何流程會把換算結果回寫成原始金額。

本文出現的金額、幣別與週期都是為了測試與示範而虛構的數值,不對應任何真實薪資條件,也不構成任何薪酬或匯率的參考。

繼續閱讀

職業檔案產生器相關文章