详细分析Js中保留前几位小数的基本知识(附Demo)

embedded/2024/11/13 1:57:41/

目录

  • 前言
  • 1. 基本知识
  • 2. Demo
  • 3. 取整 拓展

前言

从实战中学习,由于需要计算充电以及结束充电的时长,并且保留两位小数:

onLoad(page, params = {}) {// 查询要带页面信息,当前页还有数据listViewDeviceChargeHistory(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {const data = res.data.data;this.page.total = data.total;this.chargeHisData = data.records;// 计算每条记录的充电时长并保留两位小数this.chargeHisData.forEach(item => {if (item.chargeStartTime && item.chargeEndTime) {const start = new Date(item.chargeStartTime);const end = new Date(item.chargeEndTime);item.chargeDuration = ((end - start) / (1000 * 60)).toFixed(2); // 保留两位小数} else {item.chargeDuration = null; // 或者0,视需要而定}});});
}

总体截图如下:

在这里插入图片描述

1. 基本知识

保留小数位数的常见方法是使用 JavaScript 中的 toFixed 方法,用于将数字转换为字符串,并保留指定的小数位数

javascript">num.toFixed(digits)

基本的属性如下:

  • num:需要格式化的数字
  • digits:需要保留的小数位数(0 到 20 之间的整数)

基本的示例如下:

javascript">const num = 123.4567;
console.log(num.toFixed(2)); // "123.46"
console.log(num.toFixed(0)); // "123"
console.log(num.toFixed(3)); // "123.457"

具体的注意事项有如下:

  • 返回类型toFixed 返回的是字符串
    如果后续需要进行数学运算,需要将其转换回数字类型
javascript">const result = parseFloat(num.toFixed(2));
  • 舍入toFixed 采用四舍五入规则
    如果数值的后续位数大于等于 5,则会进位

  • 精度问题:JavaScript 中的浮点数表示可能导致精度问题
    例如,0.1 + 0.2 并不等于 0.3,这在使用 toFixed 时也要留意

2. Demo

除了上面这种常用的方式,还有如下的方式:

方法语法返回类型舍入方式使用场景优点缺点
toFixednum.toFixed(digits)字符串四舍五入财务、用户界面展示简单直观,易于使用返回字符串,需转换为数字
Math.roundMath.round(num * 100) / 100数字四舍五入一般数学计算返回数字,方便后续运算需要乘法和除法,稍显复杂
Intl.NumberFormatnew Intl.NumberFormat()字符串四舍五入需要国际化支持的场景支持本地化,格式化灵活语法较复杂,性能相对较低
自定义函数formatNumber(num, digits)数字四舍五入需要特殊格式化需求可根据需求自定义,灵活性高需要手动实现,可能增加代码复杂性
  1. 使用 Math.round
javascript">const num = 123.4567;
const rounded = Math.round(num * 100) / 100; // 123.46
  1. 使用 Intl.NumberFormat
javascript">const num = 123.4567;
const formatter = new Intl.NumberFormat('en-US', {minimumFractionDigits: 2,maximumFractionDigits: 2,
});
const formatted = formatter.format(num); // "123.46"
  1. 自定义函数
    可以自定义一个函数来保留小数位数:
javascript">function formatNumber(num, digits) {const factor = Math.pow(10, digits);return Math.round(num * factor) / factor;
}const formatted = formatNumber(123.4567, 2); // 123.46

3. 取整 拓展

额外补充下取整的常用函数用法

方法语法功能返回值
Math.floor()Math.floor(num)向下取整小于或等于给定数字的最大整数
Math.ceil()Math.ceil(num)向上取整大于或等于给定数字的最小整数
Math.round()Math.round(num)四舍五入最接近的整数
parseInt()parseInt(str)解析字符串为整数,忽略小数部分整数
自定义函数customFloor(num) / customCeil(num)自定义取整功能整数
  1. Math.floor()
    返回小于或等于给定数字的最大整数
javascript">const num = 4.9;
const floored = Math.floor(num); // 结果为 4
console.log(floored); // 输出: 4
  1. Math.ceil()
    返回大于或等于给定数字的最小整数
javascript">const num = 4.1;
const ceiled = Math.ceil(num); // 结果为 5
console.log(ceiled); // 输出: 5
  1. Math.round()
    返回一个数字四舍五入后的最接近整数
javascript">const num1 = 4.5;
const rounded1 = Math.round(num1); // 结果为 5
const num2 = 4.4;
const rounded2 = Math.round(num2); // 结果为 4
console.log(rounded1); // 输出: 5
console.log(rounded2); // 输出: 4
  1. parseInt()
    将字符串解析为整数。它也可以用于数字,但会忽略小数部分
javascript">const strNum = "5.9";
const intNum = parseInt(strNum); // 结果为 5
console.log(intNum); // 输出: 5const floatNum = 7.8;
const intFromFloat = parseInt(floatNum); // 结果为 7
console.log(intFromFloat); // 输出: 7
  1. 自定义取整函数
    定义一个自定义函数来实现不同的取整需求:
javascript">function customFloor(num) {return Math.floor(num); // 向下取整
}function customCeil(num) {return Math.ceil(num); // 向上取整
}const num = 3.7;
console.log(customFloor(num)); // 输出: 3
console.log(customCeil(num));   // 输出: 4

http://www.ppmy.cn/embedded/136132.html

相关文章

华为ENSP--ISIS路由协议

项目背景 为了确保资源共享、办公自动化和节省人力成本,公司E申请两条专线将深圳总部和广州、北京两家分公司网络连接起来。公司原来运行OSFP路由协议,现打算迁移到IS-IS路由协议,张同学正在该公司实习,为了提高实际工作的准确性和…

MATLAB 在数组的元素后面使用百分号 `%` 添加注释时会将其误认为是行分隔符,导致数组维度不一致

该警告提示 MATLAB 在数组的元素后面使用百分号 % 添加注释时会将其误认为是行分隔符,导致数组维度不一致。为了解决这个问题,您可以采用以下两种方法之一: 使用分号 ; 替换逗号 ,:这会将每个注释作为新行的开始,更加…

什么是crm客户关系管理系统?全面认识指南

在当今竞争激烈的商业环境中,企业需要有效的工具来管理与客户的关系,以提高客户满意度和忠诚度。客户关系管理系统(CRM)正是这样一种工具,它帮助企业更好地理解和服务客户,从而提升业务绩效。本文将全面介绍…

C++入门基础知识142—【关于C++ 友元函数】

成长路上不孤单😊😊😊😊😊😊 【14后😊///C爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于C 友元函数的相关内容! 关于…

Maven 中央仓库地址 mvnrepository.com

下载一些 jar 包驱动,不需用去官网下了,直接去 Maven 中央仓库,高效、简单 Maven 中央仓库地址 https://mvnrepository.com/open-source 我们下期见,拜拜!

停车共享小程序ssm+论文源码调试讲解

2 系统关键技术 2.1 微信小程序 微信小程序,简称小程序,英文名Mini Program,是一种全新的连接用户与服务的方式,可以快速访问、快速传播,并具有良好的使用体验。 小程序的主要开发语言是JavaScript,它与普…

linux搭建大数据环境

前期准备工作 友情提醒提前安装好vmware软件,准备好连接虚拟机的客户端 一. 基础环境 1.配置ip地址 修改ip配置文件 [rootnode1 /]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE"Ethernet" PROXY_METHOD"none" BROWSER_ONLY"no" # …

软考系统架构设计师论文:云上自动化运维及其应用

论文四 云上自动化运维及其应用 1简要说明你参与开发的软件项目,以及你所承担的主要工作 2概要叙述云上自动化运维(如CloudOps)的主要衡量指标 3详细描述你参与开发的项目如何实现云上自动化运维。 论文四:云上自动化运维及其应用 简要说明你参与开发的软件项目,以及你所…