大家在平时业务中应该经常跟小数打交道吧,有没有被小数点的保留位数问题搞得头疼啊。比如,保留一位小数,保留俩位小数,保留三位小数,向上取整、四舍五入等等。

而我最近在项目中正好遇到类似的问题:有的地方要求保留一位小数,有的地方要求保留俩位,有的地方要求四舍五入,有的地方要求向下取整。。。这些情形,总不能一个个来处理吧?于是乎,干脆封装一个方法,解决上述令人头疼的问题!话不多说,上代码:

 1 /**
2 *
3 * @param {number|string} num 需要处理的数字
4 * @param {number} n 保留位数,默认1
5 * @param {string} flag = 'ceil' || 'floor' 向上或向下保留,默认四舍五入
6 * @returns {string}
7 */
8 function formatFloat(num, n = 1, flag) {
9 var f = parseFloat(num);
10 if (isNaN(f)) {
11 return false;
12 }
13 if (flag === 'ceil') {
14 f = Math.ceil(num * Math.pow(10, n)) / Math.pow(10, n); // n 幂
15 } else if (flag === 'floor') {
16 f = Math.floor(num * Math.pow(10, n)) / Math.pow(10, n); // n 幂
17 } else {
18 f = Math.round(num * Math.pow(10, n)) / Math.pow(10, n); // n 幂
19 }
20 var s = f.toString();
21 var rs = s.indexOf('.');
22 //判定如果是整数,增加小数点再补0
23 if (rs < 0) {
24 rs = s.length;
25 s += '.';
26 }
27 while (s.length <= rs + n) {
28 s += '0';
29 }
30 return s;
31 }

结果:

好了,如果该方法适合你,如果你经常需要处理这些小数的位数问题,将该方法用到你的项目中吧~ 更多项目中常见的方法封装,传送门https://github.com/wangruibin666/wang-utils 

脚踏实地行,海阔天空飞~

js浮点数保留位数方法封装的更多相关文章

  1. C#浮点数保留位数

    C#浮点数保留位数 这里用String.Forma("{0:F}",x);来解决. 下面是试验和截图 using System; using System.Collections. ...

  2. js 获取小数点位数方法及 字符串与数字之间相互转换方法

    1.获取小数点位数方法 a. 使用 js 中 subsrting,indexOf,parseFloat三个函数,代码如下: var s = "22.127456" ;//s 为 字 ...

  3. iOS OC和JS的交互 javaScriptCore方法封装

    一.javaScriptCore javaScriptCore是一种JavaScript引擎,主要为webKit提供脚本处理能力,javaScriptCore是开源webkit的一部分,他提供了强大的 ...

  4. 前端js重组树形结构数据方法封装

    不知道大家平时工作中,有没有遇到这样一种情况:后端接口返回的数据,全都是一维的数组,都是平铺直叙式的数据,业务需求却要你实现树形结构的功能.那么,针对这种情况该怎么办呢?是跟后台好好沟通一下呢,还是沟 ...

  5. js 检查登录态方法封装(闭包、状态缓存)

    前端页面开发时,经常需要异步校验登录态,每次都重新copy之前写的方法,比较繁琐不好维护,固将登录态校验封装成一个js. (function(){ //登录状态 1 登录态有效 2 登录态无效 3 请 ...

  6. 封装getByClass(JS获取class的方法封装为一个函数)

    获取方法一(普通版) 获取单一的class: function getByClass(oParent, sClass) {//两个形参,第一个对象oParent 第二个样式名class var aEl ...

  7. js浮点数保留一位小数

    function changeTwoDecimal_f(x) { var f_x = parseFloat(x); if (isNaN(f_x)) { alert('function:changeTw ...

  8. js浮点数乘除法

    JS在处理浮点数计算时经常会遇到精度的问题,上一篇博客封装了JS浮点数加减法的方法,这一次来封装一下js浮点数乘除法运算. 其实浮点除法的封装跟加减法的封装原理是一样,只是在第一次计算完后会再复位小数 ...

  9. 实现js浮点数加、减、乘、除的精确计算(网上很多文章里的方法是不能解决所有js浮点数计算误差的)

    最近做项目,要用到js的加.减.乘.除的计算,发现js浮点数计算会有一些误差. 网上有很多文章都有js浮点数计算误差的解决方法,说能解决这个问题,But…….比如一个加法函数,如下: function ...

随机推荐

  1. 激光雷达数据到云cloud

    激光雷达数据到云cloud 在美国地质调查局的3D提升计划(3DEP)被激发到一个新的方式可用性宣布从3DEP仓库的访问和处理激光雷达点云数据. 3DEP一直在美国使用光检测和测距(激光)技术获取三维 ...

  2. FFmpeg扩展开发

    FFmpeg扩展开发 对FFmpeg RTMP/FLV部分做了扩展,用于支持H.265. 针对<video_file_format_spec_v10_1> VIDEODATA部分扩展如下: ...

  3. 内核、dns、网卡配置

    升级内核(安装新版软件包) rpm -ivh kernel-3.10.0-123.1.2.el7.x86_64.rpm 二.配置永久IP地址,子网掩码,网关地址   /etc/sysconfig/ne ...

  4. 【NX二次开发】Block UI 操作按钮

    属性说明 常规         类型 描述     BlockID     String 控件ID     Enable     Logical 是否可操作     Group     Logical ...

  5. 【NX二次开发】Block UI 指定位置

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...

  6. 理解Spring:AOP的原理及手动实现

    引入 到目前为止,我们已经完成了简易的IOC和DI的功能,虽然相比如Spring来说肯定是非常简陋的,但是毕竟我们是为了理解原理的,也没必要一定要做一个和Spring一样的东西.到了现在并不能让我们松 ...

  7. 纯小白干货:Java import以及Java类的搜索路径

    如果你希望使用Java包中的类,就必须先使用import语句导入.import语句与C语言中的 #include 有些类似,语法为:import package1[.package2-].classn ...

  8. Unity中各种查找物体的方法

    本文转自博主:Teng的世界 https://blog.csdn.net/teng_ontheway/article/details/47188141 GameObject.Find().Transf ...

  9. Redis并发竞争key的解决方案详解

    1. 需求由来 1.Redis高并发的问题 Redis缓存的高性能有目共睹,应用的场景也是非常广泛,但是在高并发的场景下,也会出现问题:缓存击穿.缓存雪崩.缓存和数据一致性,以及今天要谈到的缓存并发竞 ...

  10. Redis高并发快的3大原因详解

    1. Redis的高并发和快速的原因 1.redis是基于内存的,内存的读写速度非常快: 2.redis是单线程的,省去了很多上下文切换线程的时间: 3.redis使用多路复用技术,可以处理并发的连接 ...