网站地图    收藏   

主页 > 前端 > javascript >

JavaScript浮点数的运算详细介绍

来源:自学PHP网    时间:2014-09-19 14:47 作者: 阅读:

[导读] 在JavsScript中,变量在存储时并不区分number和float类型,而是统一按float存储。而javascript使用IEEE 754-2008 标准定义的64bit浮点格式存储number,按照IEEE 754的定义:decimal64对应的整形部分长度...

类似地,我们可以想像,1/3的结果应该是0.3333333333333333。
为了得到我们想要的结果,我们需要校正这个值。


js中通过parseFloat函数可以把字符串转换成浮点数. 如果要把字符串转换成整数我们可以使用parseInt 函数. 通过parseFloat只能把数字字符转换成浮点数,不能把字母字符转换成浮点数。

 parseFloat 函数的最主要的用途就是把用户从文本框输入的字符串转换成浮点数。
下面我们通过一个范例演示一下parseFloat函数的用法,我们放置两个文本框,让用户输入两个数字,然后计算其和并显示在第三个文本框内

 代码如下 复制代码

<html>
 
<head>
<title>脚本分</title>
<script type="text/javascript">
function to_add(){
document.f1.t3.value=parseFloat(document.f1.t1.value) + parseFloat(document.f1.t2.value);
}
</script>
</head>
<body>
<form method=post name=f1 ><br>
Enter fist value<input type=text name=t1 onBlur="to_add();"><br>
Enter Second value<input type=text name=t2 onBlur="to_add();"><br>
Sum <input type=text name=t3>
</form>
</body>
</html>

注:parseFloat函数会尽量帮你把字符串转换成函数,比如

查看源代码print?

 代码如下 复制代码
1 document.write(parseFloat("1234abc45"));

输出:1234

也就是说parseFloat函数会从字符串开始位置进行数字转换,碰到非数字字符停止,而"abc123",这样的字符串是无法转换成功的。

上面这些都不是我们想要的结果,下面来看一个函数来解决这个问题

 代码如下 复制代码

//除法函数,用来得到精确的除法结果
//说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。  
//调用:division(arg1,arg2)  
//返回值:arg1除以arg2的精确结果
function division(arg1,arg2){
 var t1=0,t2=0,r1,r2;
 try{t1=arg1.toString().split(".")[1].length}catch(e){}
 try{t2=arg2.toString().split(".")[1].length}catch(e){}
 with(Math){
  r1=Number(arg1.toString().replace(".",""));
  r2=Number(arg2.toString().replace(".",""));
  return (r1/r2)*pow(10,t2-t1);
 }
}

//乘法函数,用来得到精确的乘法结果  
//说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。  
//调用:multiply(arg1,arg2)  
//返回值:arg1乘以arg2的精确结果  
function multiply(arg1,arg2){
 arg1=String(arg1);var i=arg1.length-arg1.indexOf(".")-1;i=(i>=arg1.length)?0:i;
 arg2=String(arg2);var j=arg2.length-arg2.indexOf(".")-1;j=(j>=arg2.length)?0:j;
 return arg1.replace(".","")*arg2.replace(".","")/Math.pow(10,i+j);
}

//加法函数,用来得到精确的加法结果  
//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。  
//调用:add(arg1,arg2)  
//返回值:arg1加上arg2的精确结果  
function add(arg1,arg2){
 var r1,r2,m;
 try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
 try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
 m=Math.pow(10,Math.max(r1,r2));
 return (arg1*m+arg2*m)/m;
}

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论