文档章节

JS toFixed 四舍五入问题

tuzibuluo
 tuzibuluo
发布于 2014/01/24 14:31
字数 298
阅读 1.4K
收藏 4

   最近在对JS浮点数做运算的时候,涉及到结果的四舍五入时,利用JS的toFixed(n),对运算结果进行四舍五入,突然间相同的数据在IE8和IE9得出的结果不一致,在排除和程序逻辑问题后,把问题定位在了不同浏览器对toFixed结果的差异上,然后找到了谷老师发现不同的浏览器得到的结果不一致,即使相同浏览器的不同版本toFixed得到的结果页不一致。

  想到了一个解决方法,不知可否,主要是通过提升小数至整数,就近取整后再恢复为小数,代码如下

function round(num,n){
    var   dd=1;  
    var   tempnum;  
    for(i=0;i<n;i++){  
        dd*=10;  
    }  
    tempnum=num*dd;  
    tempnum=Math.round(tempnum);
    return formatnumber((tempnum/dd).toFixed(n),n);  
}

//对小数格式化,四舍五入,不足补零
function formatnumber(value, num){
    var a, b, c, i;
    a = value.toString();
    b = a.indexOf(".");
    c = a.length;
    if (num == 0){
        if (b != -1){
            a = a.substring(0, b);
        }
    } else{
        if (b == -1){
            a = a + ".";
            for (i = 1; i <= num; i++){
                a = a + "0";
            }
        } else{
            a = a.substring(0, b + num + 1);
            for (i = c; i <= b + num; i++){
                a = a + "0";
            }
        }
    }
    return a;
}


© 著作权归作者所有

tuzibuluo
粉丝 3
博文 14
码字总数 9603
作品 0
香港
私信 提问
加载中

评论(0)

JS保留两位小数 四舍五入函数

JS保留两位小数 四舍五入函数的小例子。 js 四舍五入函数 toFixed(),里面的参数 就是保留小数的位数。 <script language="javascript"> document.write("<h1>JS保留两位小数例子</h1><br>......

mysoftsky
2014/03/29
3.4K
0
JS四则运算与四舍五入精度问题及解决方案

一、Javascript精度问题业务背景 JS中 0.1+0.2 = 0.3000000000000004的问题,在很多业务场景里都是一个令人头痛的问题。尤其是在大型的电商企业,货币基金股票行业的网页中,JS四则运算和toF...

StevenLikeWatermelon
2018/11/06
0
0
JavaScript数字精度丢失问题总结

本文分为三个部分: 1、JS 数字精度丢失的一些典型问题(前端遇小数计算概率大,要有这个精度丢失的意识) 2、JS 数字精度丢失的原因(计算机用二进制存储数据,由于存储位置的限制有时会存在...

阿K1225
2019/07/25
88
0
JavaScript 浮点数运算的精度问题

在 JavaScript 中整数和浮点数都属于 数据类型,所有数字都是以 64 位浮点数形式储存,即便整数也是如此。 所以我们在打印 这样的浮点数的结果是 而非 。在一些特殊的数值表示中,例如金额,...

xiaogg
2019/01/07
108
0
js小数点保留时的四舍五入问题的处理

需求:要求保留两位小数,四舍五入 js的toFixed方法保留小数时的处理是4、5舍6入 使用Math.round(x)来进行数值转换,把一个数字数字舍入为最接近的整数 为什么要乘以100除以10呢? 因为js涉及...

jia林
2019/03/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

超时解决方案

背景 商城系统订单超时自动取消 车辆挂号未在某一时刻内靠台,车辆就挂起 ....等等当超过时间某个阈值后,对系统内某些数据进行校验处理 简易实现方案 延时消息方案 将系统需要承担的轮询压力...

无极之岚
30分钟前
37
0
kafka是什么?storm与kafka的区别?

kafka是消息队列,类似于RabitMQ,作为中间组件,主要解决异步,削峰,提高系统性能。 storm与kafka的区别? storm用于流数据的实时处理,在获取流数据之前,需要加入kafka消息队列来提高性能...

七宝1
51分钟前
73
0
第二章 构建业务中台的基础----共享服务体系

1.ESB:企业服务总线。 2.SOA理念最核心的价值:松耦合的服务带来业务的复用,通过服务的编排助力业务的快速响应和创新。 3.服务不需要“业务稳定”,而需要不停的滋养,只有在滋养中才能从最...

zxx901221
今天
41
0
Spring Boot 2.x基础教程:使用 ECharts 绘制各种华丽的数据图表

上一节我们介绍了如何在Spring Boot中使用模板引擎Thymeleaf开发Web应用的基础。接下来,我们介绍一下后端开发经常会遇到的一个场景:可视化图表。 通常,这类需求在客户端应用中不太会用到,...

程序猿DD
昨天
82
0
SpringBoot实战:SpringBoot之自定义配置(一)

SpringBoot会默认加载application.yml和application.properties文件,但是有时候我们会对一些配置进行分类管理,如把数据库等配置进行单独配置,那这时候要怎么办呢,SpringBoot作为现在最流...

枫叶_林
昨天
82
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部