我想知道是否可以在 Javascript 模板字符串中格式化数字,例如:
var n = 5.1234;
console.log(`This is a number: $.2d{n}`);
// -> 5.12
或者可能
var n = 5.1234;
console.log(`This is a number: ${n.toString('.2d')}`);
// -> 5.12
该语法显然不起作用,它只是对我正在寻找的事物类型的说明。
我知道像 sprintf
来自 underscore.string
的工具,但这似乎是 JS 应该能够开箱即用的东西,特别是考虑到模板字符串的强大功能。
编辑
如上所述,我已经知道第 3 方工具(例如 sprintf)和自定义函数可以执行此操作。类似的问题(例如 JavaScript 等同于 printf/String.Format )根本没有提到模板字符串,可能是因为在 ES6 模板字符串出现之前就有人问过它们。我的问题是针对 ES6 的,并且与实现无关。如果是这种情况,我很乐意接受“不,这是不可能的”的回答,但是最好的是关于提供此功能的新 ES6 功能的信息,或者对此类功能是否在其上的一些见解方法。
原文由 aquavitae 发布,翻译遵循 CC BY-SA 4.0 许可协议
No, ES6 does not introduce any new number formatting functions, you will have to live with the existing
.toExponential(fractionDigits)
,.toFixed(fractionDigits)
,.toPrecision(precision)
,.toString([radix])
和toLocaleString(…)
(不过已更新为可选择支持 ECMA-402 标准)。模板字符串与数字格式无关,它们只是将函数调用(如果标记)或字符串连接(默认)脱糖。
如果那些
Number
方法对你来说不够用,你将不得不自己动手。如果愿意,您当然可以将格式化函数编写为模板字符串标记。