JS parseFloat用法及精度问题

JS parseFloat用法及精度问题

使用parseFloat()转换浮点数
parseFloat() 的作用 被描述为 Parses a string argument and returns a floating point number..
parseFloat() 的使用方式:var num = parseFloat(string);
parseFloat() 方法与parseInt()方法的处理方式相似,从位置0开始查看每个字符,直到找到第一个非有效的字符为止,
然后把该字符之前的字符串转换成整数。不过,对于这个方法来说,第一个出现的小数点是有效字符。如果有两个小数点,
第二个小数点将被看作无效的。parseFloat() 会把这个小数点之前的字符转换成数字!并且,与parseInt()不同。
parseFloat() 要求输入的字符串必须以十进制表示浮点数。所以,八进制数'010'会被转换成10,而十六进制数'0xF'会被解析成0
举例如下:

var num = parseFloat("123abc"); //返回 123 
var num = parseFloat("0xA"); //返回 0 
var num = parseFloat("11.2"); //返回 11.2 
var num = parseFloat("11.22.33"); //返回 11.22 
var num = parseFloat("0102"); //返回 102 
var num = parseFloat("red"); //返回 NaN 

精度问题:先看一个例子

<script language="javascript"> 
var a = "0.1"; 
var b = "0.2"; 
var sum1 = parseFloat(a)+parseFloat(b); 
var sum2 = (parseFloat(a)+parseFloat(b)).toFixed(4); 
 document.write("a+b="+sum1); 
 document.write("<br/>") 
 document.write("a+b="+sum2) 
</script>
猜想一下结果,你一定会感觉到这太简单了  a+b=0.3

然而结果并非如此

a+b=0.30000000000000004
a+b=0.3000

我们可能会感到惊讶不知道这是为什么我们来看看真正的原因

浮点数都会有精度问题.浮点数移位机内表示方法的问题.做的是移位运算,所以不管是在表示还是运算时,都会出现误差


  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值