在javascript:里数值计算一直存在着很多的问题,今天我们就不一一探讨了。今天我们主要是解决在js四舍五入是怎么实现的。在JS里四舍五入还是比较麻烦的呢,没有php四舍五入那么简单,下面我们就来分析下。

js四舍五入方法之Math.round()

定义:

round() 方法可把一个数字舍入为最接近的整数,根据“round”的字面意思“附近、周围”,可以猜测该函数是求一个附近的整数。

例如:Math.round(x),则是将x取其最接近的整数。其取舍的方法使用的是四舍五入中的方法,符合数学中取舍的规则。对于小数的处理没有那么便捷,但是可以根据不同的要求,进行自定义的处理。

语法

Math.round(x)

x 必需。必须是数字。返回值是与 x 最接近的整数。

例子:

小数点后第一位<5

正数:Math.round(11.46) = 11

负数:Math.round(-11.46) = -11

小数点后第一位>5

正数:Math.round(11.68) = 12

负数:Math.round(-11.68) = -12

小数点后第一位=5

正数:Math.round(11.5)=12

负数:Math.round(-11.5)=-11

总结:(小数点后第一位)大于五全部加,等于五正数加,小于五全不加。

重点:这种方法的缺点是,只能是1位小数位进行四舍五入,那我们要是有2位、3位小数要进行四舍五入呢?

对于这个问题其实很简单,比如我们要 11.687 这个数我们要四舍五入且保留2为小数,我们可以

Math.round(11.687*100)/100

如果是 11.3458 要保留3位小数,且对末尾小数进行四舍五入呢

同理

Math.round(11.3458*1000)/1000

有几位小数,就乘以几个零。

每次都这样写比较麻烦,干脆正一个函数好了

/**

* 四舍五入

* @param {[type]} num [待处理数字]

* @param {[type]} decimal [需要保留的小数位]

* @return {[type]} []

*/

function round(num, decimal) {

if (isNaN(num)) {

return 0;

}

const p1 = Math.pow(10, decimal + 1);

const p2 = Math.pow(10, decimal);

return Math.round(num * p1 / 10) / p2;

}

console.log(round(10.11, 2)) // 10.11

console.log(round(10.16, 1)) // 10.2

console.log(round(10.116, 3)) // 10.116

console.log(round(10.11111, 4)) // 10.1111

js四舍五入tofixed方法

定义:

toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。例如将数据Num保留2位小数,则表示为:toFixed(Num);

但是其四舍五入的规则与数学中的规则不同,使用的是银行家舍入规则,银行家舍入:所谓银行家舍入法,其实质是一种四舍六入五取偶(又称四舍六入五留双)法。

具体规则如下:

简单来说就是:四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一。

显然这种规则不符合我们平常在数据中处理的方式。为了解决这样的问题,我们更多的还是使用Math.round方法进行自定义式 的实现指定保留多少位数据进行处理。

语法

NumberObject.toFixed(num)

返回值

返回 NumberObject 的字符串表示,不采用指数计数法,小数点后有固定的 num 位数字。不够位数小数位的,会用0不足。

1.35.toFixed(1) = 1.4

1.35.toFixed(2) = 1.35

1.35.toFixed(3) = 1.350

刚才也说了toFixe()用的是银行家舍入规则,那么会出现啥情况呢,与我们平时用的四舍五入的出入在哪里呢

1.35.toFixed(1) // 1.4 正确

1.335.toFixed(2) // 1.33 错误

1.3335.toFixed(3) // 1.333 错误

1.33335.toFixed(4) // 1.3334 正确

1.333335.toFixed(5) // 1.33333 错误

1.3333335.toFixed(6) // 1.333333 错误

总结:javascript中四舍五入我们用的是Math.round,但是Math.round的只根据小数位第一位进行四舍五入,需要用Math.round(num*100)/100 这种形式进行转化下。

php tofixed,详解js四舍五入tofixed和Math.round方法相关推荐

  1. python获取mysql中的数据供js调用_详解js文件通过python访问数据库方法

    我来教你 js文件怎么通过python访问数据库,希望能够为你带来帮助. 1.如果是要提交表单内容给 服务器的 python 处理,那么只需要在表单 里面的 action 填写服务端的处理路由就可以了 ...

  2. socket服务器断开消息,详解JS WebSocket断开原因和心跳机制

    1.断开原因 WebSocket断开的原因有很多,最好在WebSocket断开时,将错误打印出来. ws.onclose = function (e) { console.log('websocket ...

  3. php js实现流程图,详解js中构造流程图的核心技术JsPlumb(2)_javascript技巧

    前言:上篇详解js中构造流程图的核心技术JsPlumb介绍了下JsPlumb在浏览器里面画流程图的效果展示,以及简单的JsPlumb代码示例.这篇还是接着来看看各个效果的代码说明. 一.设置连线的样式 ...

  4. 详解js对称加密和非对称加密

    详解js对称加密和非对称加密 https保证数据在传输过程中不被窃取和篡改,从而保证传输安全 1.加密 对称加密:产生一个密钥,可以用其加密,可以用其加密,也可以用其加解密. 这个密钥可以是任何东西, ...

  5. 详解 js 函数中的 arguments

    详解 js 函数中的 arguments 1.什么 arguments 简单来说:arguments 是一个对应于传递给函数的参数的类数组对象 arguments 对象是所有(非箭头)函数中都可用的局 ...

  6. 详解JS原型链与继承

    详解JS原型链与继承 JavaScript 目录 摘自JavaScript高级程序设计: 概念 确定原型和实例的关系 原型链的问题 借用构造函数 组合继承 原型继承 寄生式继承 寄生组合式继承 new ...

  7. 详解js中的继承(一)

    详解js中的继承(一) 前言 准备知识 1.构造函数,实例 2.原型对象 3.构造函数,原型对象和实例的关系 继承 原型链 小结 前言 通过[某种方式]让一个对象可以访问到另一个对象中的属性和方法,我 ...

  8. linux 弹出窗口,实现弹出窗口的window.open用法详解(js代码)

    实现弹出窗口的window.open用法详解(js代码) [1.最基本的弹出窗口代码] 其实代码非常简单: 因为这是一段javascripts代码,所以它们应该放在 cript">标签 ...

  9. 详解JS中的Object

    详解 JS 中的 Object 从本质上看,Object 是一个构造函数,用于创建对象. 一.Object 构造函数的属性 在 Object 中声明的属性只有两个: Object.length -- ...

最新文章

  1. Linux设备驱动--块设备(三)之程序设计(转)
  2. Navicat和DBeaver的查询快捷键
  3. Tensorflow中张量数据类型的转换
  4. 折叠屏市场价值在哪里?
  5. RedHat Enterprise Linux Server 5 在VMware Workstation 6.5的详细安装过程(2)
  6. 【openjudge】 CDQZ challenge 4
  7. 气泡shader_仿蚂蚁森林气泡
  8. win10便签常驻桌面_Win10用户的印象笔记便签深度体验 | 大使专栏
  9. 电子设计教程53:555定时器工作原理与常见应用
  10. sublime 中文乱码
  11. 简单的CSS3动画案例——奔跑的熊哥
  12. 数字助手:Siri、Google和Alexa之间的PK
  13. 大一新生必看,自学必看,里昂详解数据结构之图
  14. ocp 认证 043
  15. linux安装ati工具,安装ati驱动的辛苦历程
  16. C++ primer读书记录包括第一部分和第二部分 第二十二次更新2021.9.10
  17. intel服务器芯片排行,【2021Intel服务器CPU排行榜】Intel服务器CPU哪款好_热门Intel服务器CPU推荐-太平洋产品报价...
  18. 弟中弟级,基于Vivado的IP核封装以及仿真调用,FPGA入门小玩
  19. 封装、继承和多态以及抽象类和接口
  20. NUIST_OJ P1020最长最短单词

热门文章

  1. Putty中backspace键产生乱码的解决方法????
  2. java的app构建代码_适用于Java的Google App Engine,第2部分,构建杀手级应用
  3. Laravel 集成支付宝手机网站支付
  4. 【Python】听说有个水仙花 python判断水仙花数
  5. echarts 饼状图制作 legend 在右边且带有自定义参数,title在图标中间!
  6. echarts制作饼状图如何设置不同类别之间有一定间隔?
  7. 宽带连接错误提示678和691的原因,解决方法
  8. 小马哥--山寨仿vivo 主板型号 TD528BN 6571芯片机型展示图示与root权限刷机要点
  9. 币安 PUBLIC API 示例
  10. 数据库经典查询语句与练习题