本文讲述的是 bignumber.js 这个库的静态属性,其实网上解释很多,但是感觉很多人都说不明白,写这篇文章的目的通过我的理解让更多的人更加容易理解和记住他们的含义

库的链接:GitHub - MikeMcl/bignumber.js: A JavaScript library for arbitrary-precision decimal and non-decimal arithmetic

BigNumber 有一些静态的属性,代表不同的含义

ROUND_DOWN

ROUND_UP

ROUND_CEIL

ROUND_FLOOR

ROUND_HALF_DOWN

ROUND_HALF_UP

ROUND_HALF_CEIL

ROUND_HALF_FLOOR

其中有一些我们会感觉很相似,比如 ROUND_UP 和 ROUND_CEIL,又或者 ROUND_DOWN 和 ROUND_FLOOR

1. ROUND_UP => 向上取数,这个上不是指往大的方向取数,你可以理解为 往远离 0 的方向取数,或者说是向无穷的方向

BigNumber(1.111).toFixed(2, BigNumber.ROUND_UP) // 1.12BigNumber(-1.111).toFixed(2, BigNumber.ROUND_UP) // -1.12BigNumber(1.115).toFixed(2, BigNumber.ROUND_UP) // 1.12BigNumber(-1.115).toFixed(2, BigNumber.ROUND_UP) // -1.12

2. ROUND_CEIL => 向大取数,就像我们常用的 Math.ceil,它会向更大取数

BigNumber(1.114).toFixed(2, BigNumber.ROUND_CEIL) // 1.12BigNumber(-1.114).toFixed(2, BigNumber.ROUND_CEIL) // -1.11BigNumber(1.115).toFixed(2, BigNumber.ROUND_CEIL) // 1.12BigNumber(-1.115).toFixed(2, BigNumber.ROUND_CEIL) // -1.11

同理可得

3. ROUND_DOWN  => 向下取数,这个下不是指往小的方向取数,你可以理解为 往趋近 0 的方向取数

4. ROUND_FLOOR => 向小取数 ,就像我们常用的 Math.floor,它会向更小取数

=========================================================================

那么 ROUND_HALF_UP 和 ROUND_UP 的区别是什么呢?

因为 HALF 是一半的意思,可以理解为 一半遵循我的逻辑,这个一半包含中间的数

5. ROUND_HALF_UP => 一半向上取数,因为它是远离 0 来取数的,所以一半对他来讲就是离 0 更远的一半,和四舍五入一样

举个例子

BigNumber(1.114).toFixed(2, BigNumber.ROUND_HALF_UP) // 1.11BigNumber(-1.114).toFixed(2, BigNumber.ROUND_HALF_UP) // -1.11BigNumber(1.115).toFixed(2, BigNumber.ROUND_HALF_UP) // 1.12BigNumber(-1.115).toFixed(2, BigNumber.ROUND_HALF_UP) // -1.12

6. ROUND_HALF_DOWN => 一半向下取数,因为它是接近 0 来取数的,所以一半对他来讲就是离 0 更近的一半

BigNumber(1.115).toFixed(2, BigNumber.ROUND_HALF_DOWN) // 1.11BigNumber(-1.115).toFixed(2, BigNumber.ROUND_HALF_DOWN) // -1.11BigNumber(1.116).toFixed(2, BigNumber.ROUND_HALF_DOWN) // 1.12BigNumber(-1.116).toFixed(2, BigNumber.ROUND_HALF_DOWN) // -1.12

同理可得

7. ROUND_HALF_CEIL => 一半向大取数,因为它是根据从小到大取数的,所以一半对他来讲就是更大的数

8. ROUND_HALF_FLOOR => 一半向小取数,因为它是根据从大到小取数的,所以一半对他来讲就是更小的数

综上说的就是他们只管他们绿色框框里的数字,如果不是绿色框框里的数字,就会根据四舍五入进行计算。

注意:

BigNumber 默认处理方式使用的是 ROUNDING_MODE,ROUNDING_MODE 的默认参数是 ROUND_HALF_UP

补充:

设置 ROUNDING_MODE 的方式如下,如果不设置采用的就是它的默认值 ROUND_HALF_UP

BigNumber.config({ ROUNDING_MODE: 0 })
BigNumber.set({ ROUNDING_MODE: BigNumber.ROUND_UP })    // 等同于上边

举例:

BigNumber(1.115).toFixed(2) // 1.12BigNumber.set({ ROUNDING_MODE: BigNumber.ROUND_DOWN })BigNumber(1.115).toFixed(2) // 1.11

BigNumber 的静态属性含义-(ROUND_DOWN,ROUND_UP,ROUND_CEIL,ROUND_FLOOR,ROUND_HALF_UP,ROUND_HALF_CEIL)相关推荐

  1. 玩转动态编译 - 高级篇:一,IL访问静态属性和字段

    IL介绍 通用中间语言(Common Intermediate Language,简称CIL,发音为"sill"或"kill")是一种属于通用语言架构和.NET ...

  2. Python之路(第二十三篇) 面向对象初级:静态属性、静态方法、类方法

    一.静态属性 静态属性相当于数据属性. 用@property语法糖装饰器将类的函数属性变成可以不用加括号直接的类似数据属性. 可以封装逻辑,让用户感觉是在调用一个普通的数据属性. 例子 class R ...

  3. python静态属性和静态方法_Python之路系列:面向对象初级:静态属性、静态方法、类方法...

    一.静态属性 静态属性相当于数据属性. 用@property语法糖装饰器将类的函数属性变成可以不用加括号直接的类似数据属性. 可以封装逻辑,让用户感觉是在调用一个普通的数据属性. 例子: classR ...

  4. php 静态类内存,php面向对象中static静态属性与方法的内存位置分析

    本文实例分析了php面向对象中static静态属性与方法的内存位置.分享给大家供大家参考.具体如下: static静态属性的内存位置-->类,而不是对象.下面做测试来证明一下 header(&q ...

  5. 静态属性和静态方法2 - C++快速入门22

    静态属性和静态方法2 让编程改变世界 Change the world by program 静态方法 嗯,还是静态方法?!这阵子有鱼油表示对该方法的特色还是有点云里雾里还有那个神神兮兮的this指针 ...

  6. PHP中的静态属性、静态方法、常量属性

    2019独角兽企业重金招聘Python工程师标准>>> 1.静态属性.静态方法 在面向对象编程中,我们不仅可以通过对象访问方法和属性,还可以通过类来访问它们.这样的方法和属性就是&q ...

  7. 第174天:面向对象——公有属性、私有属性和静态属性

    一.公有属性和私有属性 1 //对象构造函数 2 //私有属性好处: 安全 就类似闭包中的函数一样 减少污染 3 function Person(name){ 4 //私有属性,只能在对象构造函数内部 ...

  8. JavaScript 公有 私有 静态属性和方法

    1.公有属性和公有方法 这里的 name  age  都是参数传递进去 可以在外面直接实例化调用. 2.私有属性和方法 私有的只能在函数内部使用 作用域的原因 3.静态属性和静态方法 这里我首先 创建 ...

  9. Sonar问题解决:普通方法调用静态属性

    问题:普通方法调用静态属性时,Sonar会认为有问题 这是我们经常用的,实现Spring的Bean工厂,写一个工具类, 开放一个静态方法:获取实体类 public class BeanHelper i ...

最新文章

  1. druiddatasource配置_Springboot属性注入 Java配置和Value配置
  2. C/C++Linux服务器开发/高级架构师
  3. 第七季4:网络telnet调试、海思proc文件系统调试接口
  4. 【英语学习】【WOTD】condone 释义/词源/示例
  5. Linux OS 曝新漏洞 攻击者可在多数发行版获root 权限
  6. php mysql 高亮显示_PHP实现多关键字加亮功能
  7. 用python画圣诞树-使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
  8. OpenCV图像处理基础操作(2)
  9. 仿墨迹天气小程序源码(袋鼠天气)
  10. backgroundWorker控件使用笔记
  11. vue 3 开发环境搭建
  12. JUCE入门级教程01——界面设计(细分12块)
  13. 用 regedit 命令把注册表 .reg 文件导入注册表- -
  14. 这些AI开源项目可以让你创作出卢浮宫级别的艺术品!
  15. 计算机硬盘格式化了如何恢复出厂设置,电脑恢复出厂设置和格式化有什么区别...
  16. 传奇登录器闪退怎么回事?传奇登录器闪退解决方法分享
  17. 【备战春招/秋招系列】美团Java面经总结终结篇 (附详解答案) 1
  18. it工种分类_什么是运维?运维工种有哪些
  19. SWPU NSS新生赛(校外通道)
  20. 英语六级真题高频词汇之阅读

热门文章

  1. 验证码短信模板示例-审核标准
  2. TCP/IP 协议就是传输洋葱?一文带你深入了解
  3. 研究生如何选择适合自己的导师
  4. dpdk内存管理——内存初始化
  5. 机器学习讲堂-joblib.dump   训练模型的保存与恢复
  6. 金仓数据库KingbaseES数据类型和oracle数据类型的映射表
  7. 桌面文件夹图标变黑了 解决办法!~~
  8. iOS 支付宝支付开发集成流程,这里记载的是签名保存在前台的集成,
  9. 上行物理信道 PUCCH和DMRS for PUCCH
  10. python Django之 DRF(一)框架介绍、源码分析