javascript中float怎么控制精度?

JavaScript027

javascript中float怎么控制精度?,第1张

javascript中的float运算精度的一些问题,下面是具体的说明。

有人问到一个js问题:

    var i = 0.07 

    var r = i*100 

    alert(r)

结果为什么是7.0000000000000001? 

        查了下资料,其实JavsScript中,变量在存储时并不区分number和float类型,而是统一按float存储。而javascript使用IEEE 754-2008 标准定义的64bit浮点格式存储number,按照IEEE 754的定义: http://en.wikipedia.org/wiki/IEEE_754-2008 

decimal64对应的整形部分长度为10,小数部分长度为16,所以默认的计算结果为“7.0000000000000001”,如最后一个小数为0,则取1作为有效数字标志。 

        类似地,可以想像,1/3的结果应该是0.3333333333333333。 

        那么如何校正这个值呢? 

        可以用以下方法: 

        一、parseInt 

        var r4=parseInt(i*100) 

        二、Math.round 

        var r2=Math.round((i*100)*1000)/1000 

        以上两种方法都可以得到7 

        附全部测试代码:

    <html> 

    <head> 

    <title>测试脚本</title> 

    <script language="JAVASCRIPT"> 

    function init() 

    { 

    var i = 0.07 

    var r = i*100 

    var r2=Math.round((i*100)*1000)/1000 

    var r3 = eval(i*100) 

    var r4=parseInt(i*100) 

    var r5=parseFloat(i*100*1.0000) 

    var r6=(1/3) 

    alert(r) 

    alert("Math.round="+r2) 

    alert("eval="+r3) 

    alert("parseInt="+r4) 

    alert("parseFloat="+r5) 

    alert(""+r6) 

    } 

    </script> 

    </head> 

    <body onload="init()"> 

    </body> 

    </html>

将float类型转化为int类型有两种方法:

1、在计算时,可以使用向上取整Math.ceil(50/4),或者向下取整math.floor(50/4),或者四舍五入Math.round(50/4)

2、直接使用强制转化为整数的方法parseInt,parseInt(50/4)

1)parseInt 函数将其第一个参数转换为字符串,解析它,并返回一个整数或NaN。如果不是NaN,返回的值将是作为指定基数(基数)中的数字的第一个参数的整数。

2)parseInt有两个参数,第一个是需要转化的内容,第二个是需要转化的进制数,默认为十进制。也可以转化为八进制、十六进制、二进制。如下:

3)parseInt也可以将首部有”数字的字符串“转化为数字,例如:parseInt('12.0swrf')//返回:12

4)另外,还有一个与parseInt用法和作用类似的方法parseFloat(string,radix),parseFloat是将字符串或者数字,强制转化为浮点数类型。

扩展资料:

1、javascript是弱语言类型,定义变量时没有区分字符串,整数,浮点数。但是它很灵活,可以进行不同类型的转换。

2、javascript基本数据类型有以下几种:Number,String,Boolean,Undefined,Null,Symbol,可以根据Number,String,Boolean,Symbol这几种类型内置对象,将变量强制转换为对应的类型。如下:

参考资料:

MDN技术文档-parseInt 语法

MDN技术文档-js的数据类型和数据结构

用parseFloat(str)函数。

例如:

var f = parseFloat('23.4')

alert(f-13)

这样的话alert出来的结果就是10.4

类似的还有parseInt(str)函数

介绍一个不错的js学习网站给你,上面有DOM和js对象的详细说明及属性、方法

http://www.w3school.com.cn/js/index.asp