理解不了的问题

艾思软件-app开发公司 2009-01-07 02:55:34
<script>alert(10.01+10)</script>
----------
大家执行一下上面这句,看看是不是你想要的结果,这是传说中的BUG嘛?!
...全文
94 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
darkfox123 2009-01-08
  • 打赏
  • 举报
回复
那是因为继承了c语言强制转换 double 为 float 时精度调整的问题,实际上这是c语言调整精度所致.
zation1 2009-01-08
  • 打赏
  • 举报
回复
Javascript的浮点数计算是有点问题的,一般都是先转化成整数再计算。
手写 2009-01-08
  • 打赏
  • 举报
回复
<script>alert((10.01*100+10*100)/100) </script>
  • 打赏
  • 举报
回复
先把小数变成整数,再变回来~~~是个方法,谢谢
darkfox123 2009-01-08
  • 打赏
  • 举报
回复
自己打造个修正函数:

<script>

function psum(op, var1, var2 )
{

if( (var1+"").indexOf(".")!= -1 || (var2+"").indexOf(".")!= -1 )
{
var len1 = 0;
var len2 = 0;
if( (var1+"").indexOf(".")!= -1 )
len1 = (var1+"").split(".")[1].length;
if( (var2+"").indexOf(".")!= -1 )
len2 = (var2+"").split(".")[1].length;
var p = Math.pow(10,len1>len2?len1:len2);
var1 = parseInt( var1 * p );
var2 = parseInt( var2 * p );

switch(op)
{
case "+":
return (var1 + var2)/p;
case "-":
return (var1 - var2)/p;
case "*":
return (var1 - var2)/(p*p);
case "/":
return (var1 / var2);
}
}
else
{
switch(op)
{
case "+":
return (var1 + var2);
case "-":
return (var1 - var2);
case "*":
return (var1 - var2);
case "/":
return (lena / lenv);
}
}
}

alert( psum( "+", 10.01, 10 ) );
</script>
ZhangYaoxing 2009-01-08
  • 打赏
  • 举报
回复
这是JS的实现问题,我们无能为力的,只能四舍五入一下
Math.round
happy002 2009-01-08
  • 打赏
  • 举报
回复
解决根本?
出现这样的问题,跟js的计算机制有关
我是没什么办法
  • 打赏
  • 举报
回复
楼上有解决根本的方法吗
happy002 2009-01-08
  • 打赏
  • 举报
回复
toFixed();

alert((10.01+10).toFixed(2))

括号里的数字是小数位数

  • 打赏
  • 举报
回复
如何解决呢?
ReyZhang 2009-01-07
  • 打赏
  • 举报
回复
up
liuhua19841201 2009-01-07
  • 打赏
  • 举报
回复
数字类型就是这样
ZhangYaoxing 2009-01-07
  • 打赏
  • 举报
回复
没办法,事情就是这个样子滴。float是一种不精确的数据类型
  • 打赏
  • 举报
回复
我顶

87,915

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧