因为计算机处理浮点数的方式, Float 计算本来就不是精确的, 你要不显示那个1, 把结果格式化一下好了 :http://www.mredkj.com/javascript/numberFormat.html另外, 浮点数的比较也有这个问题, 也就是不要用 if (a==b) ..., 而是 if ( abs(a-b)<很小的数值 ) 这样的形式, 那个很小的数值看你的需要, 取0.000000001或...
解决方案 »
- 各位有空吗?麻烦帮看下以下代码哪里出问题了?【IF语句不能正常执行】
- js求助
- 想要用DIV制作无缝链接的广告哦,可是不知道哪错了,请高手指教一下,谢谢啦
- 为什么我这样创建FILE标签老是不起作用啊?
- extjs的表格列名有单击事件吗
- js动态替换img的src导致内存不断增长
- javascript的 FileSystemObject问题请教
- 关于iframe中使用window.history.go(-1)的问题,求解答
- 能让INPUT中的文字的字体大小自动适应INPUT的高度吗?请见...
- 求助!怎么用js修改被选择的checkbox的样式
- 有没有办法在msdn左边的树的图标上加标记?
- 想嵌套使用javascript,和jsp
<script language=JavaScript>
function tofloat(f,dec) {
if(dec<0) return "Error:dec<0!";
result=parseInt(f)+(dec==0?"":".");
f-=parseInt(f);
if(f==0)
for(i=0;i<dec;i++) result+='0';
else {
for(i=0;i<dec;i++) f*=10;
result+=parseInt(Math.round(f));
}
return result;
}
alert(tofloat(11.20000000000000000001,5))
</script>
SA49 = parseFloat(1111111.55);
SA52 = parseFloat(11111111.55);
alert(qswhAdd(SA49,SA52))
function qswhAdd(n1,n2){
var r1,r2,m;
try{r1=n1.toString().split(".")[1].length}catch(e){r1=0}
try{r2=n2.toString().split(".")[1].length}catch(e){r2=0}
m=Math.pow(10,Math.max(r1,r2))
return (n1*m+n2*m)/m
}
</script>