注意 初探 Intl.NumberFormat.formatRangeToParts() 輸出不一定是範圍
前言
在先前的 初探 Intl.NumberFormat.formatRangeToParts() 基本的使用了 formatRangeToParts() ,在更之前的 使用 Intl.NumberFormat 顯示數值範圍 也是顯示範圍,但它可能會顯示近似值,formatRangeToParts() 也是如此嗎?是的,在此把學習的過程做個紀錄。
內容
範例如下
let parts = new Intl.NumberFormat("en-US", {
style: "currency",
currency: "USD",
maximumFractionDigits: 0,
}).formatRangeToParts( 3.5 , 4.4);
console.log(parts);
// [[object Object] {
// source: "shared",
// type: "approximatelySign",
// value: "~"
// }, [object Object] {
// source: "shared",
// type: "currency",
// value: "$"
// }, [object Object] {
// source: "shared",
// type: "integer",
// value: "4"
// }]
partValues = parts.map((p) => p.value);
console.log(partValues);//["~", "$", "4"]
formatRangeToParts() 也是會有顯示近似值的狀況,設好 maximumFractionDigits ,就可能發生顯示近似值,如範例示範的範圍,如果只想取數值一樣透過 map() 來處理,使用 Intl.NumberFormat.formatRangeToParts() 要考慮有顯示近似值的可能。
參考資料
[ developer.mozilla.org ] Intl.NumberFormat
沒有留言:
張貼留言