欢迎!从2017年开始,将慢慢的不在xmind上写总结了,全部转到博客中!这里将不再随便写写,将继承在xmind的精神,继续前行!!!

工作问题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变量弱类型转换 这个就是上述问题出现的原因了........

 

posted @ 2016-11-17 15:19  拐进web的奋斗者  阅读(215)  评论(0编辑  收藏  举报