简单制作价格拆分整数和小数部分
前言前端做电商、票务系统的时候经常遇到价格特殊排版需求。 比如大字号展示价格整数右上角小号字体展示小数类似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/8/5 10:46:48 阅读更多 →
Linux硬盘分区管理与文件系统配置指南

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

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

2026/8/5 10:45:48 阅读更多 →
C语言-第二天

C语言-第二天

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

2026/8/5 10:45:48 阅读更多 →

最新新闻

西安同城顺风车系统开发实战指南:架构设计与部署流程

西安同城顺风车系统开发实战指南:架构设计与部署流程

西安同城顺风车系统开发实战指南:架构设计与部署流程 西安同城顺风车系统开发是一个典型的LBS(基于位置服务) 出行匹配项目。它需要解决的核心问题是:如何在城市范围内,高效、安全地匹配司机与乘客的出行路线。本文将基…

2026/8/5 11:45:16 阅读更多 →
AI技术正在重构嵌入式软件开发范式

AI技术正在重构嵌入式软件开发范式

摘要:AI 技术正在深刻重构嵌入式软件开发范式,从工具链智能化、系统设计优化、运行时自适应到全生命周期管理,推动开发模式从"手工技艺"向"AI 辅助工程"转变。本文系统阐述了 AI 如何赋能嵌入式软件的开发、测试、分析、…

2026/8/5 11:45:16 阅读更多 →
方法参数与Debug按键

方法参数与Debug按键

1、基本数据类型做方法参数传递基本类型做方法参数传递,传递的是值,不是变量本身。运行方法:压栈方法执行完毕:弹栈 → 释放内存public class Demo01 {public static void main(String[] args) {int a 10;int b 20;method(a,b…

2026/8/5 11:45:16 阅读更多 →
C_数组_数组与指针关系

C_数组_数组与指针关系

数组对象和首元素很多人学习 C 语言时,都会听过一句话:数组就是指针。也有人说:数组名就是一个指针。甚至有人说:数组和指针完全一样。答案是否定的。数组不是指针。指针也不是数组。这是从 C89 到 C23 都没有改变的核心规则。在这…

2026/8/5 11:45:16 阅读更多 →
网络设备接入交换机后Ping不通?从物理到逻辑的完整排查指南

网络设备接入交换机后Ping不通?从物理到逻辑的完整排查指南

1. 问题现象与初步排查“设备接上交换机,灯也亮了,但就是ping不通。” 这几乎是每个网络工程师或IT运维在职业生涯中都会遇到的“经典开局”。它不像服务器宕机那样直接,也不像配置错误那样有明确指向,更像是一个需要你抽丝剥茧的…

2026/8/5 11:45:16 阅读更多 →
5分钟快速恢复QQ空间历史记录:GetQzonehistory终极指南

5分钟快速恢复QQ空间历史记录:GetQzonehistory终极指南

5分钟快速恢复QQ空间历史记录:GetQzonehistory终极指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否担心QQ空间里那些承载青春记忆的说说会随着时间流逝而消失&…

2026/8/5 11:44:16 阅读更多 →

日新闻

Java缓存框架:JetCache

Java缓存框架:JetCache

TOC 一、简介 JetCache 是一个 Java 缓存抽象框架,为不同的缓存解决方案提供了统一的使用方式。 它提供的注解比 Spring Cache 更加强大。 JetCache 的注解支持原生 TTL、两级缓存以及在分布式环境中的自动刷新功能,同时你也可以通过代码直接操作 Cach…

2026/8/5 0:00:43 阅读更多 →
AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

需求:通孔焊盘 十字花;过孔 Via 实心直连;贴片焊盘按需设置 AD 测试版本AD24 很多工程师踩坑:全部统一十字,导致接地过孔阻抗高、大电流发热! 一、快捷键打开规则 PCB 界面按下:D R 展开…

2026/8/5 0:00:43 阅读更多 →
AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

更多请点击: https://kaifayun.com 第一章:AI生成素描效果 AI生成素描效果是计算机视觉与风格迁移技术融合的典型应用,其核心在于将彩色照片或RGB图像转换为具有手绘质感、明暗对比强烈、边缘清晰的单色素描图像。该过程通常依赖于深度学习模…

2026/8/5 0:00:43 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/4 13:24:41 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/4 11:41:39 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/4 13:38:24 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/4 13:38:40 阅读更多 →