工作问题1. 计算数值相加
一:项目中有个地方需要将后台差传过来的数据得到总和
二:问题:js for循环求和为何是拼接而不是相加
直接上案例说明正确的处理方法
<script> var ss=[0.23,0.111,0.7,9]; var eg1=3; var eg2=""; for(var i=0;i<ss.length;i++){ eg1 += ss[i]; eg2 += ss[i]; } alert(eg1);// alert(eg2)// </script> <script language="javascript"> var a = "0.11"; var b = "0.2801"; var c = "1.002"; var sum1 = parseFloat(a)+parseFloat(b)+parseFloat(c); var sum2 = (parseFloat(a)+parseFloat(b)+parseFloat(c)).toFixed(4) document.write("a+b+c="+sum1); document.write("<br/>") document.write("a+b+c="+sum2) </script>
说明
1、eg1可以得到自己想要的,eg2却是将数据进行拼接、------------------这也是我在项目中出现的问题。尽管已经保证了数据都是number型,但是还是出现问题。关键在于 var eg1=3和 var eg2=“”的区别,这里已经默认设置了变量的类型,--------------所以执行+=的时候有了区别
2、对于字符串类类型 需要 转换number型。这没啥好说的。
3、拓展 js 字符串转换成数字的三种方法
方法主要有三种:转换函数、强制类型转换、利用js变量弱类型转换。
1)js提供了parseInt()和parseFloat()两个转换函数。前者把值转换成整数,后者把值转换成浮点数。只有对String类型调用这些方法,这两个函数才能正确运行;对其他类型返回的都是NaN(Not a Number)。
parseInt("1234blue"); //returns 1234
parseInt("0xA"); //returns 10
parseInt("22.5"); //returns 22
parseInt("blue"); //returns NaN
parseFloat("1234blue"); //returns 1234.0
parseFloat("0xA"); //returns NaN
parseFloat("22.5"); //returns 22.5
parseFloat("22.34.5"); //returns 22.34
parseFloat("0908"); //returns 908
parseFloat("blue"); //returns NaN
2) 强制类型转换
ECMAScript中可用的3种强制类型转换如下:
Boolean(value)——把给定的值转换成Boolean型;
Number(value)——把给定的值转换成数字(可以是整数或浮点数);
String(value)——把给定的值转换成字符串。
3)js变量弱类型转换 这个就是上述问题出现的原因了........