数字相加减的问题 SOS!!!!

ncj518 2002-11-12 12:19:07
我要实现的功能是
12.24+12.35=24.59
可是我的结果却是24.589999999995
我的代码(类似):
textbox1.value=parsefloat(12.24)+parsefloat(12.35)
问如何让它只有两位小数的准确值???SOS!!
...全文
68 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
ncj518 2002-11-14
  • 打赏
  • 举报
回复
因为我保证我的数据输入是两位。程序需求也只是两位。
freefalcon 2002-11-12
  • 打赏
  • 举报
回复
我觉得也很奇怪,12.24+12.35直接就等于24.59啊
<script>
alert(12.24+12.35)
</script>
zhpfaff 2002-11-12
  • 打赏
  • 举报
回复
我不知道你用的浏览器的版本,我用的IE6SP1下不存在你的问题。这是我测试的结果,很正常
<script>
function j()
{
var a=document.form1.a1.value
var b=document.form1.a2.value
//var v=Math.round((parseFloat(a)+parseFloat(b))*100)/100;
var v=parseFloat(a)+parseFloat(b)
document.form1.a3.value=v;
}
</script>

<form name=form1>
<input type=text value=12.24 name=a1>
<input type=text value=12.35 name=a2>
<input type=text value=0 name=a3>
<input type=button value=计算 name=b onclick="j()">
JK_10000 2002-11-12
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/1109/1109616.xml?temp=.2280237
freefalcon 2002-11-12
  • 打赏
  • 举报
回复
m为要转化的数,n为小数位数,对于小数末尾的0会舍弃
<script>
alert(decimal(28.5899,2));
function decimal(m,n){
with(Math){
return round(m*pow(10,n))/pow(10,n);
}
}
</script>
ncj518 2002-11-12
  • 打赏
  • 举报
回复
可我必须要准确的数字
因为做的是 会计报表的生成
不能四舍五入的!!!!
ncj518 2002-11-12
  • 打赏
  • 举报
回复
这个方法我也试过,可我的程式必须是一句话,就要写完的代码(在asp.net的datagrid中加载的)
有没有,更简单的,一个函数就可以实现的
我给200分呀,不然我就要 下岗了!!!
救命呀。
zhpfaff 2002-11-12
  • 打赏
  • 举报
回复
用四舍五入啊,我以前也为这个头大,现在的方法是:
var a=12.24
var b=12.35
var v=Math.round(eval(a+b)*100)/100;
alert(v)
qiushuiwuhen 2002-11-12
  • 打赏
  • 举报
回复
try

<script>
alert(qswhAdd(12.24,12.35))
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>
ncj518 2002-11-12
  • 打赏
  • 举报
回复
textbox1.value=parseFloat(12.24)+parseFloat(12.35)
我用的就是这样,
可得到的是24。58999999995
不是24。59
我要的是正确的直,用javascript 写的。
孟子E章 2002-11-12
  • 打赏
  • 举报
回复
要得到准确值,可以先转换成整数,在计算,然后除n*10,也可以用vbscript做,可以准确点
孟子E章 2002-11-12
  • 打赏
  • 举报
回复
textbox1.value=parseFloat(12.24)+parseFloat(12.35)
qiushuiwuhen 2002-11-12
  • 打赏
  • 举报
回复
toFixed要求5.5,你肯定是截取两位么?
ncj518 2002-11-12
  • 打赏
  • 举报
回复
我已经找到了方法:
textbox1.value=(parsefloat(a)+parsefloat(b)).toFixed(2)
光用parsefloat(a)+parsefloat(b))会不时的出现控制不了的结果。
ncj518 2002-11-12
  • 打赏
  • 举报
回复
还有更好的方法吗?
晚上记分 200分。
qiushuiwuhen 2002-11-12
  • 打赏
  • 举报
回复
<script>alert(111112.24+111112.35)</script>

freefalcon(心宇) 的方法包含在我上述的方法里,呵呵

JK_10000 2002-11-12
  • 打赏
  • 举报
回复
freefalcon(心宇) 的方法挺好,先收藏

87,996

社区成员

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

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