JavaScript Math.round()四舍五入误差问题

Math.round(1.3) //1
Math.round(1.6) //2

然后在对-0.5或者-2.5进行round的时候却出现了意料之外的结果:

Math.round(-0.5) //0
Math.round(-2.5) //-2

究其原因,主要是因为Math.round的实现原理造成的:
Math.round(n)首先对n进行+0.5操作,然后对结果进行Math.floor()运算。于是Math.round(-2.5)的运算过程可以看做:

function mathround(n) { //-2.5
    var nn = n + 0.5 //-2
    return Math.floor(nn) //-2
}
mathround(-2.5)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 9,698评论 0 13
  • 转载请声明出处 博客原文 随手翻阅以前的学习笔记,顺便整理一下放在这里,方便自己复习,也希望你有也有帮助吧 第一课...
    前端进阶之旅阅读 14,368评论 13 94
  • 有一条猎狗,不幸和主人走丢,无家可归的它,从此在森林里过上了流浪的生活。 可是,它在这个自由的大森林中,没有感受到...
    六弦散人阅读 884评论 0 0
  • 工厂停工快一年了,每月领着那点补助金,心安理得待在家里,看似很安逸的生活。一切显得自然而然,觉得自己快要长毛了。天...
    ChesterRich暖男晓晓阅读 2,642评论 1 1
  • 【育心道生黄帝内经全文通读汇报】 学经人员:广东星宇妈G13 学经日期:2017年2月19日 学经内容:《黄帝内经...
    育心星宇妈阅读 1,833评论 0 1