现有一个需求,是将1.337069262154058e-5
转换为浮点数,喜欢用java转换,JS又是我的不擅长的地方,只能求助于Google,搜了好几个都无法实现,最后将找到一个,简单的修改如下:
/*科学计数法转换数值*/ function scientificToNumber(tempValueStr) { if ((tempValueStr.indexOf('E') != -1) || (tempValueStr.indexOf('e') != -1)) { var regExp = new RegExp('^(((\\d+.?\\d+)|(\\d+))[Ee]{1}((-(\\d+))|(\\d+)))$', 'ig'); var result = regExp.exec(tempValueStr); var resultValue = ""; var power = ""; if (result != null){ resultValue = result[2]; power = result[6]; result = regExp.exec(tempValueStr); } if (resultValue != "") { if (power != "") { var powVer = Math.pow(10, power).toString(); alert("10的" + power + "次方[" + powVer + "]"); resultValue = (resultValue * powVer).toString(); } } } }
测试结果
scientificToNumber("1.337069262154058e-5"); //转换正确
scientificToNumber("1.337069262154058e-8"); //转换完成后依旧是科学计数法,猜测是值太大了?