如何更简洁实现字符串转两位小数的##,##数字格式?
更简洁的德国格式两位小数转换实现
你当前的实现已经能满足需求,这里提供两种更紧凑的写法,核心逻辑不变但代码更简洁:
写法1:简化数字转换 + 保留Intl.NumberFormat
const formatToDeDecimal = (value: string) => new Intl.NumberFormat('de-DE', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(+value.replace(',', '.'));
写法2:使用数字的toLocaleString方法
const formatToDeDecimal = (value: string) => (+value.replace(',', '.')).toLocaleString('de-DE', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
说明
- 用一元加号
+替代Number(),实现字符串到数字的转换,写法更凝练 - 第二种写法直接调用数字的
toLocaleString方法,省去显式创建Intl.NumberFormat实例的步骤,代码更短 - 两种写法都能完美匹配你的需求示例:
formatToDeDecimal('1')→'1,00'formatToDeDecimal('12')→'12,00'formatToDeDecimal('12,3')→'12,30'formatToDeDecimal('12,34')→'12,34'
内容的提问来源于stack exchange,提问作者avdeveloper
相关产品推荐
相关产品推荐

