模板字符串中的数字格式 (Javascript - ES6)

新手上路,请多包涵

我想知道是否可以在 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 许可协议

阅读 654
2 个回答

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 方法对你来说不够用,你将不得不自己动手。如果愿意,您当然可以将格式化函数编写为模板字符串标记。

原文由 Bergi 发布,翻译遵循 CC BY-SA 3.0 许可协议

您应该能够使用数字的 toFixed() 方法:

 var num = 5.1234;
var n = num.toFixed(2);

原文由 userDEV 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题