JavaScript实现数字千分位的方法

news2024/10/8 15:20:55

前言

如何利用 JavaScript 将普通数字转换为带有千分位分隔符的格式。我们将介绍多种方法,包括使用内置的 toLocaleString()
方法、Intl.NumberFormat
对象以及自定义函数来实现数字格式化。无论你是初学者还是有一定经验的开发者,本文都将为你揭示数字格式化的各种技巧和灵活性,让你在数据展示方面游刃有余。让我们一起探索如何美化数字,让数据更加清晰和吸引人!

什么是千分位分隔

千分位分割指的是在数字中插入逗号或其他分隔符,以提高数字的可读性。通常,千分位分割会在数字的每三位之间插入一个分隔符,例如逗号。这个分隔符可以帮助我们更清晰地识别数字的大小和结构。
举个例子,假设有一个数字 1234567.6789。在进行千分位分割后,它将被转换为
1,234,567,678.9。通过插入逗号作为分隔符,我们可以更容易地理解这个数值表示的是一个百万级别的数字。
千分位分割广泛应用于金融、统计数据、货币金额等领域,以及在各种数据展示中。它可以使大数字更易读,并且更加美化和规范化。在编程中,我们可以使用各种语言和方法来实现千分位分割,如
JavaScript 中的 toLocaleString() 方法、C# 中的 ToString(“N”) 方法等。
通过千分位分割,我们可以方便地将数字转换为更具可读性和易懂性的格式,使数据更加清晰和吸引人。

代码实现

        /*
        * 参数说明:
        * number:要格式化的数字
        * decimals:保留几位小数, 默认0
        * dec_point:小数点符号, 默认.
        * thousands_sep:千分位符号, 默认,
        */
        // vue中使用 {{ number_format('xxxx变量名') }}
        number_format(number, decimals = 0, dec_point = '.', thousands_sep = ",") {
          number = (number + '').replace(/[^0-9+-Ee.]/g, '');
          var n = !isFinite(+number) ? 0 : +number,
              prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
              sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
              dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
              s = '';
          s = (prec ? n.toFixed(prec) : '' + Math.round(n)).split('.');
          var re = /(-?\d+)(\d{3})/;
          while (re.test(s[0])) {
            s[0] = s[0].replace(re, "$1" + sep + "$2");
          }
          if ((s[1] || '').length < prec) {
            s[1] = s[1] || '';
            s[1] += new Array(prec - s[1].length + 1).join('0');
          }
          return s.join(dec);
        },
  1. 清除非法字符:首先,通过正则表达式 .replace(/[^0-9±Ee.]/g, ‘’) 清除输入数字中的所有非数字和非运算符字符。

  2. 转换和验证数字:将清理后的字符串转换为数字,并检查这个数字是否是有限的(不是无穷大或NaN)。如果不是有限数,则默认为0。

  3. 处理小数位数:根据参数 decimals 确定需要保留的小数位数。如果 decimals 不是有限数,则默认为0。

  4. 处理千分位和十进制点:根据参数 thousands_sep 和 dec_point 确定千分位和十进制点的符号。如果这些参数未定义,则使用默认值。

  5. 分割数字:使用 toFixed(prec) 方法将数字转换为字符串,并分割成整数部分和小数部分。

  6. 添加千分位:使用正则表达式 /(-?\d+)(\d{3})/ 匹配每三位数字,然后在匹配到的数字组之间添加千分位符号。

  7. 补齐小数位数:如果小数部分的长度小于 decimals 指定的位数,会在小数部分末尾添加足够的0。

  8. 返回结果:将整数部分和小数部分使用十进制点符号连接起来,形成最终的格式化字符串。

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

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

相关文章

探索Python文本处理的新境界:textwrap库揭秘

文章目录 **探索Python文本处理的新境界&#xff1a;textwrap库揭秘**一、背景介绍二、textwrap库是什么&#xff1f;三、如何安装textwrap库&#xff1f;四、简单函数使用方法4.1 wrap()4.2 fill()4.3 shorten()4.4 dedent()4.5 indent() 五、实际应用场景5.1 格式化日志输出5…

黑龙江等保测评详细指南

一、什么是等保测评&#xff1f; 等保&#xff08;信息安全等级保护&#xff09;是指根据信息系统的重要性和安全需求&#xff0c;对其进行分级保护的制度。黑龙江省的等保测评旨在评估信息系统的安全性&#xff0c;确保其符合国家和地方的安全标准。 二、等保测评的必要性 1…

OpenAI重磅发布Canvas:跟ChatGPT一起写作编程

现在是大半夜1点56&#xff0c;国庆第三天&#xff0c;我想睡觉&#xff0c;真的。 但是&#xff0c;ChatGPT更新了&#xff0c;虽然不是那种王炸级的新模型模型更新&#xff0c;但是更新了一个极度优雅&#xff0c;对普通人极度友好的功能。 而且&#xff0c;顺带&#xff0…

ASB:LLM智能体应用攻防测试数据集

ABS&#xff1a;LLM智能体应用攻防测试数据集 Agent应用 Agent Security Bench (ASB): Formalizing and Benchmarking Attacks and Defenses in LLM-based Agents 尽管基于 LLM 的代理能够通过外部工具和记忆机制解决复杂任务&#xff0c;但也可能带来严重安全风险。现有文献对…

地图可视化的艺术:深入比较Mapbox、OpenLayers、Leaflet和Cesium,不同场景下应如何选择地图库

目录 地图可视化的艺术&#xff1a;深入比较Mapbox、OpenLayers、Leaflet和Cesium 一、总览 二、定制地图美学的先行者——Mapbox 1、主要功能特点 2、开源情况 3、市场与应用人群 4、安装与基础使用代码 三、开源GIS地图库的全能王——OpenLayers 1、主要功能特点 2…

重要的事情说两遍!Prompt「复读机」,显著提高LLM推理能力

【导读】 尽管大模型能力非凡&#xff0c;但干细活的时候还是比不上人类。为了提高LLM的理解和推理能力&#xff0c;Prompt「复读机」诞生了。 众所周知&#xff0c;人类的本质是复读机。 我们遵循复读机的自我修养&#xff1a;敲黑板&#xff0c;划重点&#xff0c;重要的事…

原生input实现时间选择器用法

2024.10.08今天我学习了如何用原生的input&#xff0c;实现时间选择器用法&#xff0c;效果如下&#xff1a; 代码如下&#xff1a; <div><input id"yf_start" type"text"> </div><script>$(#yf_start).datepicker({language: zh…

ELK中L的filebeat配置及使用(超详细)

上一次讲解了如何在linux服务器上使用docker配置ELK中的E和K&#xff0c;这期着重讲解一下L怎么配置。 首先L在elk中指的是一个数据处理管道&#xff0c;可以从多种来源收集数据&#xff0c;进行处理和转换&#xff0c;然后将数据发送到 Elasticsearch。L的全称就是&#xff1…

国外电商系统开发-运维系统文件下载

文件下载&#xff0c;作者设计的比较先进&#xff0c;如果下载顺利&#xff0c;真的还需要点两次鼠标&#xff0c;所有的远程文件就自动的下载到了您的PC电脑上了。 现在&#xff0c;请您首选选择要在哪些服务器上下载文件&#xff1a; 选择好了服务器以后&#xff0c;现在选择…

【智能算法应用】人工水母搜索算法求解二维路径规划问题

摘要 本文应用人工水母搜索算法&#xff08;Jellyfish Search, JFS&#xff09;求解二维空间中的路径规划问题。水母搜索算法是一种新型的智能优化算法&#xff0c;灵感来源于水母的群体运动行为&#xff0c;通过模仿水母的觅食、漂浮等行为&#xff0c;实现全局最优路径的搜索…

51单片机基本知识

51单片机的基本知识 一、单片机介绍 单片机是单片微型计算机的简称&#xff0c;把各种功能部件包括中央处理器&#xff08;CPU&#xff09;、只读存储器&#xff08;ROM&#xff09;、随机读写存储器&#xff08;RAM&#xff09;、输入输出&#xff08;I/O&#xff09;单元、…

算法闭关修炼百题计划(四)

仅供个人复习 1.两数相加2.寻找峰值3.寻找旋转排序数组中的最小值4.寻找旋转排序数组中的最小值II5.搜索旋转排序数组6.岛屿的最大面积7.最大数8.会议室9.最长连续序列 1.两数相加 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储…

【微服务】网关 - Gateway(上)(day7)

概述 引入 在前几个系列中&#xff0c;使用Eureka、Consul、Nacos解决了服务注册、服务发现的问题&#xff1b;使用SpringCloudLoadBalancer解决了负载均衡的问题&#xff1b;使用OpenFeign解决了远程调用的问题。 但是现在所有的微服务接口都是直接对外暴露的&#xff0c;可…

【优选算法】(第二十八篇)

目录 K个⼀组翻转链表&#xff08;hard&#xff09; 题目解析 讲解算法原理 编写代码 两数之和&#xff08;easy&#xff09; 题目解析 讲解算法原理 编写代码 K个⼀组翻转链表&#xff08;hard&#xff09; 题目解析 1.题目链接&#xff1a;. - 力扣&#xff08;Leet…

win11 24H2怎么安装_u盘安装win11 24H2详细步骤【支持新旧机型安装】

10月1日&#xff0c;微软正式发布了Windows 11 24H2正式版。对于win11 24h2新机器安装肯定是可以的&#xff0c;对于旧电脑在硬件配置上可能无法满足Windows 11 24h2的最低系统要求&#xff0c;如果按官方要求是无法安装win11的。但是如果采用第三方pe方式安装的话&#xff0c;…

Android Studio实现安卓图书管理系统

获取源码请点击文章末尾QQ名片联系&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动 171安卓小说 1.开发环境 android stuido3.6 jak1.8 2.功能介绍 安卓端&#xff1a; 1.注册登录 2.图书列表 3.图书借阅 4.借阅列表 3.系统截图

VSCode使用Code Runner插件运行时,路径错误问题

1. 问题介绍 由于Code Runner插件的工作目录与文件执行目录不同&#xff0c;而导致路径错误&#xff01; 示例演示&#xff1a; 创建根目录test-dir&#xff0c;然后在里面分别创建两个目录code和data&#xff0c;分别存放Python程序read_file.py和输入数据input.txt read_fi…

PCIe配置篇(2)——如何进行配置操作(二)

一、配置机制 我们之前提到过&#xff0c;配置空间存在于PCIe设备上&#xff0c;而处理器通常无法直接执行配置读写请求&#xff0c;因为它只能生成内存和I/O请求。这意味着RC&#xff08;Root Complex&#xff09;需要将某些访问请求转换为配置请求&#xff0c;以支持配置空间…

人像抠图换背景怎么做?5款出色抠图工具让照片更加聚焦精彩

拍了一张很赞的照片&#xff0c;结果背景一团糟&#xff0c;完全抢了人像的风头&#xff1f;又或者在社交媒体上看到别人分享的图片&#xff0c;人像突出、背景清晰&#xff0c;而自己的总是差那么点意思&#xff1f; 别担心&#xff0c;现在有了人像抠图app&#xff0c;这些烦…

YOLOv10改进策略【注意力机制篇】| EMA 即插即用模块,提高远距离建模依赖(含二次创新)

一、本文介绍 本文记录的是基于EMA模块的YOLOv10目标检测改进方法研究。EMA认为跨维度交互有助于通道或空间注意力预测&#xff0c;并且解决了现有注意力机制在提取深度视觉表示时可能带来的维度缩减问题。在改进YOLOv10的过程中能够为高级特征图产生更好的像素级注意力&#…