2024年9月2日 星期一

調整 Intl 的數字系統

 調整 Intl 的數字系統

前言

  Intl 可以調整數字系統,在此把學習的過程做個紀錄'。


內容

  範例如下

console.log( new Intl.NumberFormat('zh-TW', { 
  style: 'unit', 
  unit : 'liter',
  unitDisplay : 'long',
  numberingSystem : 'arab',
  }).format( 1234567890) );//١٬٢٣٤٬٥٦٧٬٨٩٠ 公升
//
console.log( new Intl.NumberFormat('zh-TW', { 
  style: 'unit', 
  unit : 'liter',
  unitDisplay : 'long',
  numberingSystem : 'hans',
  }).format( 1234567890) );//1,234,567,890 公升
//
console.log( new Intl.NumberFormat('zh-TW', { 
  style: 'unit', 
  unit : 'liter',
  unitDisplay : 'long',
  numberingSystem : 'mathsans',
  }).format( 1234567890) );//𝟣,𝟤𝟥𝟦,𝟧𝟨𝟩,𝟪𝟫𝟢 公升
//follow can't work in Chrome
//console.log( Intl.Locale.prototype.getNumberingSystems() );


  要改變數字系統是透過 numberingSystem ,能夠填的參數可以在 Intl.Locale.prototype.getNumberingSystems() ,根據區域會有自己的預設值, zh-TW 的預設值是 hans ,範例的第一例顯示的是"阿拉伯-印度數字",明顯的不是我們常見的數字,第三的範例看起來和 hans 一樣,但要注意數字 0 顯示得字型式不一樣的!最後的 Intl.Locale.prototype.getNumberingSystem() 被註解掉是因為它並不是每個瀏覽器都支援,至少我使用的 Chrome 目前並不支援,該作用應該是取得預設的數字系統參數,似乎真沒必要提供,因為地區本身就會有慣用的數字系統參數了,會要改的時候應該是要以非慣用的數字系統顯示才會用到,所以只要知道該地區的預設值是什麼就可以了,不能用函數詢問也沒差。


參考資料

[ developer.mozilla.org ] Intl.NumberFormat

Intl.Locale.prototype.getNumberingSystems()


沒有留言:

張貼留言