在前端开发中,我们经常需要显示各种数字类型数据,而这些数字通常需要特定的格式才能更好地呈现。ECMAScript 2019 中引入了 Number.prototype.toLocaleString() 方法来轻松实现数字的格式化处理。本文将介绍如何使用该方法实现数值号格式化和小数精度控制,并提供相应的示例代码。
数值号格式化
数值号(Numerical Separator)指的是在数字中插入的分隔符,例如千位分隔符。在我们平时生活中看到的数字(如货币、温度、时间)中,通常都带有一些特定的分隔符来方便识别。在 ECMAScript 2019 中,我们可以通过 Number.prototype.toLocaleString() 方法来快速的实现数字的数值号格式化。具体实现方式如下:
const num = 12345.6789; console.log(num.toLocaleString('en-US')); // 12,345.679 (美国英语) console.log(num.toLocaleString('zh-CN')); // 12,345.679 (中国大陆中文)
其中,toLocaleString() 方法接受一个参数,即标准提供的语言,可以根据不同的参数生成不同的分隔符。
值得注意的是,这里使用间断符 ()
来说明该参数是可选的,如果省略该参数,则则默认使用系统当前语言环境。例如:
const num = 12345.6789; console.log(num.toLocaleString()); // 12,345.679 (默认当前语言环境)
小数精度控制
在数字类型数据格式化时,精度控制也是一个常见的需求。在 ECMAScript 2019 中,我们可以利用 Number.prototype.toPrecision() 方法实现小数精度控制。toPrecision() 方法接受一个参数表示保留位数,可以轻松地控制小数点后几位。示例代码如下:
const num = 1234.5678; console.log(num.toPrecision(6)); // 1234.57 console.log(num.toPrecision(3)); // 1.23e+3
需要注意的是,当保留位数小于当前实际位数时,toPrecision() 方法会自动对精度处理进行四舍五入,而在科学计数法下,保留位数指的是有效数字的位数而非小数点后几位。
综合应用
下面给出一个综合应用的示例代码:将一个带有多位小数的数字格式化为带千位分隔符的整数,并且保留指定位数的小数。示例代码如下:
const num = 1234567.890123; console.log(num.toLocaleString('en-US', {maximumFractionDigits: 2})); // 1,234,567.89 console.log(num.toLocaleString('zh-CN', {maximumFractionDigits: 3})); // 1,234,567.890(此处为美式英文格式,因为中国大陆中文不支持小数点后以 0 结尾的情况)
在使用该方法时,可以通过传入 options 参数来对更多的参数进行配置,例如 maximumFractionDigits 表示要保留的最大小数位数。更多关于 options 参数的配置方式可以参考 MDN 文档。
总结
ECMAScript 2019 中的 Number 格式化技巧提供了快捷、简单的方式实现数字数值号格式化和小数精度控制。开发者可以利用这些新方法实现更好的数字类型数据展示效果,提
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/651bb04895b1f8cacd351ef3