【日常记录】【JS】使用Number.prototype.toLocaleString 对 数字做 格式化

news2024/11/22 7:14:11

文章目录

    • 1、引言
    • 2、语法参数
    • 3、常见案例
    • 4、参考链接

1、引言

在目前的项目中,经常需要给数字做格式化处理,特别是财务方面,比如分割成千分位,保留小数,增加符号等 ,这些都需要我们手写一些函数来处理。
但阅读文章的时候发现了, Number.prototype.toLocaleString

在这里插入图片描述

2、语法参数

语法

toLocaleString()
toLocaleString(locales)
toLocaleString(locales, options)

locales 和 options 参数让应用程序可以指定要进行格式转换的语言,并且定制函数的行为。
参数
locales可选参数 缩写语言代码(BCP 47 language tag)的字符串或者这些字符串组成的数组。与 Intl.NumberFormat() 构造函数的 locales (en-US) 参数相同。如果是 undefined的话会使用运行时默认的 locale
options可选参数 调整输出格式的对象。与 Intl.NumberFormat() 构造函数的 options (en-US) 参数相同。在无 Intl.NumberFormat 支持的实现中,这个参数是被忽略的。

借用chat gpt

BCP 47BCP:Best Current Practice)是一种标准,用于标识语言标签,以指示特定语言环境的语言和区域设置。BCP 47 语言标签由多个组件组成,可以用来准确地描述一个语言环境。一个基本的 BCP 47 语言标签由两个主要组件组成:语言代码和地区代码。

语言代码通常是 ISO 639 标准定义的两个或三个字母的代码,代表一个语言,例如:

英语:en
中文:zh
西班牙语:es
日语:ja
阿拉伯语:ar


地区代码通常是 ISO 3166 标准定义的两个字母的国家/地区代码,用于指定语言使用的地理区域,例如:

美国:US
中国:CN
英国:GB
法国:FR
日本:JP


BCP 47 语言标签可以通过连接语言代码和地区代码来表示完整的语言环境。例如:

美国英语:en-US
中国中文:zh-CN
西班牙西班牙语:es-ES
日本日语:ja-JP
options(可选):一个对象,用于指定格式化选项,比如数字的显示方式、货币符号等。它可以包含以下属性:

localeMatcher:用于选择区域设置的算法,默认值为 "best fit"。
style:指定格式化的类型,可以是 "decimal"(十进制)、"percent"(百分比)、"currency"(货币)或 "unit"(单位)。默认值为 "decimal"。
unit:指定货币类型。
currency:指定货币格式化时要使用的货币代码。
currencyDisplay:指定货币符号的显示方式,可以是 "symbol"(符号)、"narrowSymbol"(窄符号)、"code"(货币代码)或 "name"(货币名称)。
useGrouping:一个布尔值,表示是否在数字中使用千位分隔符。默认为 true。
minimumIntegerDigits:最小整数位数,不足时使用零填充。
minimumFractionDigits:最小小数位数,不足时使用零填充。
maximumFractionDigits:最大小数位数。
minimumSignificantDigits:最小有效数字位数。
maximumSignificantDigits:最大有效数字位数。

货币类型

  • acre : 英亩
  • bit : 位
  • byte : 字节
  • celsius : 摄氏度
  • centimeter : 厘米
  • day : 天
  • degree : 度
  • fahrenheit : 华氏度
  • fluid-ounce : 液体盎司
  • foot : 英尺
  • gallon : 加仑
  • gigabit : 千兆位
  • gigabyte : 千兆字节
  • gram : 克
  • hectare : 公顷
  • hour : 小时
  • inch : 英寸
  • kilobit : 千位
  • kilobyte : 千字节
  • kilogram : 千克
  • kilometer : 千米
  • liter : 升
  • meter : 米
  • mile : 英里
  • millimeter : 毫米
  • millisecond : 毫秒
  • minute : 分钟
  • month : 月
  • ounce : 盎司
  • percent : 百分比
  • petabyte : 拍字节
  • pound : 磅
  • second : 秒
  • stone : 英石
  • terabit : 太位
  • terabyte : 太字节
  • week : 周
  • yard : 码
  • year : 年

3、常见案例

基本使用

    const number = 123456.65491;
    console.log(number.toLocaleString());// 123,456.654

    //  取消 分隔符
    console.log(number.toLocaleString(undefined, { useGrouping: false }));// 123456.655
    console.log(number.toLocaleString("zh-Hans-CN-u-nu-hanidec"));// 一二三,四五六.六五五

使用style 与 格式化

    const number = 123456.65491;
    /**
     * style:指定格式化的类型,可以是 "decimal"(十进制)、"percent"(百分比)、"currency"(货币)或 "unit"(单位)。默认值为 "decimal"。
    */
    //  如果 style 为 unit,需要搭配unit 参数使用。
    console.log(number.toLocaleString("zh-CN", { style: "unit", unit: "mile" }));// 123,456.655米


    console.log(`~~~~`);
    console.log(number.toLocaleString("zh-CN", { style: "currency", currency: "EUR" }));// €123,456.65
    console.log(number.toLocaleString("zh-CN", { style: "currency", currency: "CNY" }));// ¥123,456.65
    console.log(number.toLocaleString("zh-CN", { style: "currency", currency: "USD" }));// US$123,456.65
    console.log(`~~~~`);
    console.log(number.toLocaleString("en-US", { style: "currency", currency: "EUR" }));// €123,456.65
    console.log(number.toLocaleString("en-US", { style: "currency", currency: "CNY" }));// CN¥123,456.65
    console.log(number.toLocaleString("en-US", { style: "currency", currency: "USD" }));// $123,456.65

设置货币显示方式

    /**
     * "symbol":使用货币符号来表示货币单位,例如 "$" 表示美元。
     * "narrowSymbol":使用窄格式的货币符号来表示货币单位,通常是一个简化的符号。
     * "code":使用国际标准化的货币代码来表示货币单位,例如 "USD" 表示美元。
     * "name":使用货币的全名来表示货币单位,例如 "美元" 表示美元。
    */
    console.log(number.toLocaleString("zh-CN", { style: "currency", currency: "EUR", currencyDisplay: 'symbol' }));// €123,456.65
    console.log(number.toLocaleString("zh-CN", { style: "currency", currency: "CNY", currencyDisplay: 'narrowSymbol' }));// ¥123,456.65
    console.log(number.toLocaleString("zh-CN", { style: "currency", currency: "USD", currencyDisplay: 'code' }));// USD 123,456.65
    console.log(number.toLocaleString("zh-CN", { style: "currency", currency: "CNY", currencyDisplay: 'name' }));// 123,456.65人民币
    console.log(number.toLocaleString("zh-CN", { style: "currency", currency: "USD", currencyDisplay: 'name' }));// 123,456.65美元

其他操作

    console.log(`~~~~ maximumFractionDigits minimumFractionDigits`);
    const number2 = 12345.4
    // 设置 小数点后面的 最大个数和最小个数
    // 不够最小位数的话,会补零
    console.log(12345.4.toLocaleString(undefined, { maximumFractionDigits: 2, minimumFractionDigits: 2 }));// 12,345.40
    console.log(12345.1234567.toLocaleString(undefined, { maximumFractionDigits: 6, minimumFractionDigits: 4 }));// 12,345.123457


    console.log(`~~~~ maximumSignificantDigits minimumSignificantDigits`);
    // 这俩属性据chatgpt 说常用于 科学计数法、货币格式化、数据可视化
    const number3 = 12345.4
    console.log(number3.toLocaleString(undefined, { maximumSignificantDigits: 2, minimumSignificantDigits: 2 }));// 12,000
    console.log(number3.toLocaleString(undefined, { minimumSignificantDigits: 2, maximumSignificantDigits: 4, }));// 12,350


    // minimumIntegerDigits
    // 最小整数位数,不足时使用零填充
    console.log('~~~minimumIntegerDigits');
    console.log(1234.34.toLocaleString(undefined, { minimumIntegerDigits: 6 })); // 001,234.34
    console.log(1234.34.toLocaleString(undefined, { minimumIntegerDigits: 3 })); // 1,234.34 , 这个数值 整数位是4个,满足最小这个,所以不会改变
    console.log(12.34.toLocaleString(undefined, { minimumIntegerDigits: 3 })); // 012.34

MDN 案例

// MDN 其他案例
const number = 123456.789;

// 德国使用逗号作为小数分隔符,分位周期为千位
console.log(number.toLocaleString("de-DE"));
// → 123.456,789

// 在大多数阿拉伯语国家使用阿拉伯语数字
console.log(number.toLocaleString("ar-EG"));
// → ١٢٣٤٥٦٫٧٨٩

// 印度使用千位/拉克(十万)/克若尔(千万)分隔
console.log(number.toLocaleString("en-IN"));
// → 1,23,456.789

// nu 扩展字段要求编号系统,e.g. 中文十进制
console.log(number.toLocaleString("zh-Hans-CN-u-nu-hanidec"));
// → 一二三,四五六.七八九

// 当请求不支持的语言时,例如巴厘语,加入一个备用语言,比如印尼语
console.log(number.toLocaleString(["ban", "id"]));
// → 123.456,789

4、参考链接

  • Intl.NumberFormat() constructor MDN
  • Number.prototype.toLocaleString() MDN

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1588849.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue.js组件精讲 第2章 基础:Vue.js组件的三个API:prop、event、slot

如果您已经对 Vue.js 组件的基础用法了如指掌,可以跳过本小节,不过当做复习稍读一下也无妨。 组件的构成 一个再复杂的组件,都是由三部分组成的:prop、event、slot,它们构成了 Vue.js 组件的 API。如果你开发的是一个…

TechTool Pro for Mac v19.0.3中文激活版 硬件监测和系统维护工具

TechTool Pro for Mac是一款专为Mac用户设计的强大系统维护和故障排除工具。它凭借全面的功能、高效的性能以及友好的操作界面,赢得了广大用户的信赖和好评。 软件下载:TechTool Pro for Mac v19.0.3中文激活版 作为一款专业的磁盘和系统维护工具&#x…

大数据入门之如何利用Phoenix访问Hbase

在大数据的世界里,HBase和Phoenix可谓是一对黄金搭档。HBase以其高效的列式存储和强大的数据扩展能力,成为大数据存储领域的佼佼者;而Phoenix则以其SQL化的操作方式,简化了对HBase的访问过程。今天,就让我们一起看看如…

哲学家带你实现单链表

最近本哲♂学家学习了链表这一新的数据结构,接下来由我带领大家实现链表: 一 、头文件 注:本写法是无头的单链表,所以传参为二级指针。 我们事先写好所要完成的函数,在 .c文件中进一步去完成。 typedef int SLTData…

19(20)-1(3)-CSS3 平面 2D 变换+CSS3 过渡

个人主页:学习前端的小z 个人专栏:HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 ✍一、CSS3 平面 2D 变换💎1 坐标轴💎2 transform 语法…

云原生数据库海山(He3DB)PostgreSQL版核心设计理念

本期深入解析云原生数据库海山PostgreSQL版(以下简称“He3DB”)的设计理念,探讨在设计云原生数据库过程中遇到的工程挑战,并展示He3DB如何有效地解决这些问题。 He3DB是移动云受到 Amazon Aurora 论文启发而独立自主设计的云原生数…

【学习】Spring IoCDI

🎥 个人主页:Dikz12📕格言:吾愚多不敏,而愿加学欢迎大家👍点赞✍评论⭐收藏 目录 Spring 是什么? 什么是 IoC容器? 传统开发模式 loC开发模式 IoC的优势 IoC 的使用 Bean的…

策略为王股票软件源代码-----如何修改为自己软件04

上面是如何打开-------类---------函数 1. 数据结构 1) 股票数据结构的定义在头文件Src\StkLib\Include\Stock.h中,主要的几个结构定义为: KDATA K线数据结构 DRDATA 除权数据结构 REPORT 交易所在交易时间内不断发送的报价信息 MINUTE 分钟成交…

最大连续1的个数 III

题目链接 最大连续1的个数 III 题目描述 注意点 nums[i] 不是 0 就是 10 < k < nums.length 解答思路 创建一个滑动窗口&#xff0c;保证窗口内翻转0的个数始终不大于k&#xff0c;不断移动窗口的右边界&#xff0c;有以下三种情况&#xff1a; 当右边界的值为1&…

Java基础第十课——类与对象(1)

前面二白的九讲属于Java基础方面的内容&#xff0c;总体来说偏基础和简单&#xff0c;能完成的操作也有限&#xff0c;有兴趣的同学可以写一写相关的管理系统&#xff0c;后面二白也会上传一些自己敲的小系统&#xff0c;下面就要开始Java面对对象的知识内容了&#xff0c;从这…

【年度典型案例】扫码就能领补贴?通知社保在线速办?当心是钓鱼骗局!

随着我们生活的数字化程度越来越高&#xff0c;完成各种业务和服务变得前所未有的便捷。只需轻轻一点手机屏幕&#xff0c;我们办事儿变得飞快又方便。然而&#xff0c;正当我们享受这种数字化带来的便捷时&#xff0c;一些不法分子也在暗中伺机而动&#xff0c;利用各种手段制…

c# refc# substring c# 反射c# split c# websocket c# datatable使用

在C#编程中&#xff0c;ref关键字、Substring方法、反射&#xff08;Reflection&#xff09;、Split方法、WebSocket通信以及DataTable的使用都是常见的技术和方法。下面我将逐一为您详解这些内容。 1. C# ref关键字 ref关键字在C#中用于按引用传递参数。这意味着当您将变量作…

PC-lint 学习之配置方法

1. 下载PC-lint 9.0后&#xff0c;点击pclint9setup.exe进行安装&#xff08;我只安装了C/C语言&#xff0c;其他语言可安装时选择&#xff09; 2.安装完成后&#xff0c;打开keil5&#xff0c;选择配置 3. 配置选项 &#xff08;1&#xff09;Lint Executable&#xff1a;在第…

基于SpringBoot+Vue+Mysql的图书管理系统

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序、Php和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…

html+javascript,用date完成,距离某一天还有多少天

图片展示: html代码 如下: <style>* {margin: 0;padding: 0;}.time-item {width: 500px;height: 45px;margin: 0 auto;}.time-item strong {background: orange;color: #fff;line-height: 100px;font-size: 40px;font-family: Arial;padding: 0 10px;margin-right: 10px…

LeetCode---392周赛

题目列表 3105. 最长的严格递增或递减子数组 3106. 满足距离约束且字典序最小的字符串 3107. 使数组中位数等于 K 的最少操作数 3108. 带权图里旅途的最小代价 一、最长的严格递增或递减子数组 按照题目要求进行模拟即可&#xff0c;这里提供两者思路&#xff1a; 1、两次…

Harmony鸿蒙南向外设驱动开发-Codec

功能简介 OpenHarmony Codec HDI&#xff08;Hardware Device Interface&#xff09;驱动框架基于OpenMax实现了视频硬件编解码驱动&#xff0c;提供Codec基础能力接口给上层媒体服务调用&#xff0c;包括获取组件编解码能力、创建组件、参数设置、数据的轮转和控制、以及销毁…

数据分析python代码——数据填充

在Python中&#xff0c;我们通常使用pandas库来处理和分析数据。数据填充是数据预处理的一个重要步骤&#xff0c;用于处理数据中的缺失值。以下是使用pandas库进行数据填充的示例代码&#xff1a; 在数据分析中&#xff0c;处理缺失值&#xff08;空值&#xff09;是一个重要…

Failed to load dll

Unity运行时提示 dll 加载失败 Plugins: Failed to load ‘Assets/Plugins/xxx.dll’ because one or more of its dependencies could not be loaded. 使用 Dependency Walker 查看这个 dll 引用&#xff0c;一推引用丢失 最后确认是 C 组件缺失 打开 Visual Studio Install…