alert(5.31-1.31),结果是多少?

Immoralism 2003-03-29 09:14:30
谁有解决办法?
在vbs中就没有这个问题
...全文
78 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
心云意水 2003-03-30
  • 打赏
  • 举报
回复
啊!言重了,我也是不知道他要什么样的格式,所以偷懒没贴代码。
fason 2003-03-30
  • 打赏
  • 举报
回复
对不起.
fason 2003-03-30
  • 打赏
  • 举报
回复
完美方案是
<script>
function Number.prototype.Fixed(num){
with(Math){
var m=pow(10,Number(num))
return round(this*m)/m;
}
}
alert(c(56.10,23.12).Fixed(2));
function c(n1,n2){
var m=0,s1=n1.toString(),s2=n2.toString();
m=s1.split(".")[1].length
m=s2.split(".")[1].length
return (n1-n2).Fixed(m)//高版本可以用(n1-n2).toFixed(m)
}
</script>
心云意水 2003-03-30
  • 打赏
  • 举报
回复
啊!后边的代码错了。应该是:
<script>
Number.prototype.fix = function(num)
{with(Math)return round(this.valueOf()*pow(10,num))/pow(10,num);
}
alert((5.31-1.31).fix(2));
</script>
心云意水 2003-03-30
  • 打赏
  • 举报
回复
to: fason(阿信),什么叫想当然?
顶楼的又没有说要保留小数!我当然给他返回一个整数了!
想要保留小数也可以啊
toFixed(n)不就可以?不过对浏览器有版本要求而已
像没有版本要求就自己写!
比如:
<script>
String.prototype.fn = function(n)
{ s=""
for(i=0;i<n;i++)s+=this
return s
}
Number.prototype.fix = function(num)
{with(Math)return (round(this.valueOf()*pow(10,num))/pow(10,num)).toString().search(/\./i)==-1?(round(this.valueOf()*pow(10,num))/pow(10,num)).toString()+"."+"0".fn(num):(round(this.valueOf()*pow(10,num))/pow(10,num));
}
alert((5.31-1.31).fix(2));
</script>
上边的代码返回任意数的保留n位小数值,为了考虑货币的效果(xx.xx)形势,所以长了一点儿,因为4.00的格式是不能显示的(以数字方式),如果不用顾及那个用下边的就行
<script>
Number.prototype.fix = function(num)
{with(Math)return (round(this.valueOf()*pow(10,num))/pow(10,num)).toString().search(/\./i)==-1?parseFloat((round(this.valueOf()*pow(10,num))/pow(10,num)).toString()+"."):(round(this.valueOf()*pow(10,num))/pow(10,num));
}
alert((5.31-1.31).fix(2));
</script>
emu_ston 2003-03-30
  • 打赏
  • 举报
回复
0.31不能用二进制精确表示,不是js的问题。

秋水好久没出手了噢 :)
Iamfish 2003-03-30
  • 打赏
  • 举报
回复
确实是怪事。gz
fason 2003-03-30
  • 打赏
  • 举报
回复
楼上不要想当然
心云意水 2003-03-30
  • 打赏
  • 举报
回复
alert(Math.round(5.31-1.31))
fason 2003-03-30
  • 打赏
  • 举报
回复
那是IE的bug
Immoralism 2003-03-30
  • 打赏
  • 举报
回复
怎么没人来啊?
liubingqian 2003-03-30
  • 打赏
  • 举报
回复
这不是JavaScript的错
fason 2003-03-30
  • 打赏
  • 举报
回复
我觉得完美因为是秋水写的
qiushuiwuhen 2003-03-30
  • 打赏
  • 举报
回复
没有完美的,:p
<script>
function qswhSub(n1,n2){
var m1=0,m2=0,m;
try{m1=n1.toString().split(".")[1].length}catch(e){}
try{m2=n2.toString().split(".")[1].length}catch(e){}
m=Math.pow(10,Math.max(m1,m2));
return ((n1*m)-(n2*m))/m
}
alert(qswhSub(5.3,1.31))
alert(qswhSub(5.31,1.31))
</script>

或者用以前的版本qswhAdd,只是第二个参数要加负号
Estyle 2003-03-29
  • 打赏
  • 举报
回复
奇特的问题!关注,关注!
Immoralism 2003-03-29
  • 打赏
  • 举报
回复
up
 Posted on 2008-03-17 14:01 ILCW 阅读(653) 评论(0)  编辑 收藏 所属分类: .NET

87,910

社区成员

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

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