NumberFormat 不会遵守 .toFixed
NumberFormat won't respect .toFixed
我需要这种格式:
555.555.55,55
555.555.55,50 /* Note te extra zero */
我正在尝试这样
new Intl.NumberFormat("es-ES").format(current.toFixed(2));
但这会打印出来
555.555.55,5
有什么想法吗?
问题是你如何使用 format
:
new Intl.NumberFormat("es-ES").format(current.toFixed(2));
^^^^^^^^^^^^^^^^^^
对 current.toFixed(2)
的调用将 return 一个 string
已经有 2 位小数的实例。
使用字符串实例调用 NumberFormat.prototype.format
将导致它将字符串转换回数字,然后根据 es-ES
文化规则对其进行格式化,从而丢失有关固定的信息-小数位格式。
相反,使用指定 minimumFractionDigits
:
的 options
对象实例化 NumberFormat
new Intl.NumberFormat("es-ES", { minimumFractionDigits: 2 } ).format( current );
如果要重复使用 Intl.NumberFormat
对象,请记住缓存它,这样就不会每次都重新创建它:
const esFormat = new Intl.NumberFormat("es-ES", { minimumFractionDigits: 2 } ).format( current );
async function doSomething() {
const someNumericValue = await getNumber();
if( typeof someNumericValue !== 'number' || isNaN( someNumericValue ) ) throw new Error( someNumericValue + " is not a number." )
return esFormat.format( someNumericValue );
}
我需要这种格式:
555.555.55,55
555.555.55,50 /* Note te extra zero */
我正在尝试这样
new Intl.NumberFormat("es-ES").format(current.toFixed(2));
但这会打印出来
555.555.55,5
有什么想法吗?
问题是你如何使用 format
:
new Intl.NumberFormat("es-ES").format(current.toFixed(2));
^^^^^^^^^^^^^^^^^^
对 current.toFixed(2)
的调用将 return 一个 string
已经有 2 位小数的实例。
使用字符串实例调用 NumberFormat.prototype.format
将导致它将字符串转换回数字,然后根据 es-ES
文化规则对其进行格式化,从而丢失有关固定的信息-小数位格式。
相反,使用指定 minimumFractionDigits
:
options
对象实例化 NumberFormat
new Intl.NumberFormat("es-ES", { minimumFractionDigits: 2 } ).format( current );
如果要重复使用 Intl.NumberFormat
对象,请记住缓存它,这样就不会每次都重新创建它:
const esFormat = new Intl.NumberFormat("es-ES", { minimumFractionDigits: 2 } ).format( current );
async function doSomething() {
const someNumericValue = await getNumber();
if( typeof someNumericValue !== 'number' || isNaN( someNumericValue ) ) throw new Error( someNumericValue + " is not a number." )
return esFormat.format( someNumericValue );
}