简单制作价格拆分整数和小数部分
前言前端做电商、票务系统的时候经常遇到价格特殊排版需求。 比如大字号展示价格整数右上角小号字体展示小数类似83.6。这时候就需要一个工具函数把金额拆成整数字符串和小数字符串两部分。 下面分享我正在项目里使用的价格拆分函数顺带讲坑点与优化方案。原始代码先看初稿javascript运行/** * 拆分价格整数 和 小数 * param {number} price 金额 * returns {obj} {int:整数, dec:小数一位} */ function splitPrice(price) { // 统一保留1位小数 const num Number(price).toFixed(1); const arr num.split(.); return { int: arr[0], dec: arr[1] } }功能说明Number(price)防止传入字符串类型金额统一转为数字.toFixed(1)强制保留1 位小数根据你的业务可改成 2 位split(.)用小数点切割字符串分割成数组返回对象int 整数部分dec 小数部分直接拿去渲染页面简单调用测试javascript运行console.log(splitPrice(83.6)); // {int: 83, dec: 6} console.log(splitPrice(100)); // {int: 100, dec: 0} console.log(splitPrice(9.9)); // {int: 9, dec: 9}发现原始代码存在的坑坑 1极端情况数组不存在第二项举个例子理论上toFixed()一定会生成小数点但是如果传入异常值、NaN 的时候split(.)得到的数组长度为 1arr[1]会是undefined页面渲染会报错。坑 2JS 浮点数精度老问题直接对原生数字计算后再 toFixed依然存在精度问题。示例0.1 0.2不等于 0.3业务计算金额尽量后端返回处理好的字符串前端仅做展示。坑 3注释和代码不一致注释写着小数两位代码用的是toFixed(1)保留一位小数属于低级 bug复制代码很容易踩雷。优化完善版本生产推荐javascript运行/** * 拆分价格分离整数 和 小数部分 * param {number|string} price 原始金额支持数字/字符串 * param {number} digit 保留小数位数默认1位 * returns {Object} {int:string, dec:string} */ function splitPrice(price, digit 1) { // 转为数字异常值兜底为0 const amount Number(price) || 0; // 固定小数位数返回字符串 const fixedStr amount.toFixed(digit); // 分割小数点 const [intStr, decStr 0] fixedStr.split(.); return { int: intStr, dec: decStr } }优化点入参兼容支持数字、字符串两种金额传入异常兜底如果传 null、undefined、文字自动当成 0 元不会报错解构赋默认值decStr 0就算分割不到小数点小数部分默认是 0杜绝 undefined小数位数可配置需要两位小数直接调用splitPrice(99.9, 2)调用示例javascript运行// 保留1位小数 splitPrice(50); // {int:50, dec:0} splitPrice(123.5); // {int:123, dec:5} // 保留2位小数 splitPrice(88.8, 2); // {int:88, dec:80} // 异常参数测试 splitPrice(abc); // {int:0, dec:0} splitPrice(null); // {int:0, dec:0}页面渲染实战场景拿到拆分结果后直接渲染 html实现大小字体价格效果javascript运行const priceInfo splitPrice(83.6); const html span classprice-int${priceInfo.int}/span span classprice-dec.${priceInfo.dec}/span ;搭配 css 轻松实现常见的商品价格样式css.price-int { font-size: 30px; font-weight: bold; } .price-dec { font-size: 14px; }重要业务提醒避坑重点toFixed 四舍五入规则toFixed()是银行家舍入不是我们日常的四舍五入。如果对金额精度要求极高不要前端做金额运算交给后端处理。前端只负责展示金额计算不要依赖前端 JSJS 浮点数天生有精度缺陷加减乘除尽量后端算好前端只接收最终金额字符串 / 数字仅做展示拆分。如果你业务统一需要始终保留 2 位小数只需要把调用时 digit 传 2或者直接把函数默认值改成 2。

相关新闻

7-Zip绿色版功能介绍,免费解压缩软件安装包下载

7-Zip绿色版功能介绍,免费解压缩软件安装包下载

解压个文件还要花钱?上个月帮同事弄电脑,她打开一个zip文件,蹦出来个WinRAR的”试用期已结束”弹窗。我当场愣住了——这年头解压还要掏钱?我二话不说从U盘里翻出7-Zip绿色版扔给她。1.6MB,比我手机里随便一张截图都小…

2026/10/15 2:43:04 阅读更多 →
Linux硬盘分区管理与文件系统配置指南

Linux硬盘分区管理与文件系统配置指南

1. Linux硬盘分区管理基础概念在Linux系统中,硬盘分区管理是系统管理员和开发者的必备技能。与Windows系统不同,Linux采用独特的文件系统结构和分区方式,理解这些差异是进行有效管理的前提。Linux系统中常见的分区工具包括fdisk、parted、gdi…

2026/10/8 1:49:42 阅读更多 →
C语言-第二天

C语言-第二天

01 计算机中的单元bit(位):计算机中的最小存储单位,表示一个二进制位(0或1)。byte(字节):计算机中基本存储单元,1 byte 8 bit。计算机中的数据以二进制形式存…

2026/10/14 21:32:57 阅读更多 →

最新新闻

基于Springboot城乡居民医疗管理系统【附源码+文档】

基于Springboot城乡居民医疗管理系统【附源码+文档】

💕💕作者: 米罗学长 💕💕个人简介:混迹java圈十余年,精通Java、小程序、数据库等。 💕💕各类成品Java[毕][设] 。ssm,springboot,vue等项目&#…

2026/10/15 2:42:26 阅读更多 →
Matlab实现氢能综合能源系统优化调度模型

Matlab实现氢能综合能源系统优化调度模型

1. 项目背景与核心价值氢能作为清洁能源的重要载体,正在重塑综合能源系统的运行方式。这项研究通过Matlab实现了计及氢能的综合能源系统优化调度模型,为多能互补系统提供了量化分析工具。我在参与某工业园区微电网项目时,深刻体会到传统能源调…

2026/10/15 2:42:26 阅读更多 →
淘宝上新一套图要做 4 张,我实测了 4 个 AI 套图工具

淘宝上新一套图要做 4 张,我实测了 4 个 AI 套图工具

淘宝上新一个品,标配一套图:主图、白底图、细节图、场景图,至少 4 张。传统流程是拍完一张张修,4 张图半天没了。我拿 4 个 AI 工具实测了"一套图"这个场景。一、51AI:上传商品图,一键生成整套电…

2026/10/15 2:42:26 阅读更多 →
家庭住宅IP是什么?与机房IP、普通住宅代理有什么区别?

家庭住宅IP是什么?与机房IP、普通住宅代理有什么区别?

在跨境电商管理、海外社媒运营以及大规模数据采集的实际操作中,网络连接的“风控”与“被封禁”往往是困扰运营人员最大的难题。很多时候,账号被限制或数据爬取失败,根源不在于操作本身,而在于你所使用的 IP 地址类型。了解不同 I…

2026/10/15 2:42:26 阅读更多 →
指纹浏览器怎么使用?从创建浏览器配置到团队协作的完整教程

指纹浏览器怎么使用?从创建浏览器配置到团队协作的完整教程

管理多个电商店铺、社媒账号或广告账户时,平台总能判定“关联”,团队协作时账号密码传来传去也不安全。指纹浏览器能为每个浏览器配置文件保存独立的浏览环境,包括 Cookie、本地存储和浏览器指纹,让不同账号在同一台电脑上完全隔离…

2026/10/15 2:42:26 阅读更多 →
H3 工具集(H3 Utils)实战导读:在可组合 HTTP 框架里接住数据、守住边界

H3 工具集(H3 Utils)实战导读:在可组合 HTTP 框架里接住数据、守住边界

H3 工具集(H3 Utils)实战导读:在可组合 HTTP 框架里接住数据、守住边界 【免费下载链接】h3 ⚡️ Minimal H(TTP) framework built for high performance and portability 项目地址: https://gitcode.com/GitHub_Trending/h31/h3 假设…

2026/10/15 2:41:26 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →