+ -
当前位置:首页 → 问答吧 → 为什么input里计算的结果会是这样?

为什么input里计算的结果会是这样?

时间:2011-09-04

来源:互联网

今晚在写一个程序的时候,不经意间遇到了这样一个问题,各位大侠指教则个。

源程序(为了大家能看明白问题,我重新写了一个):
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>新建网页 1</title>
</head>
<body>
<input type="text" id="t1" size="20" onpropertychange="t3.value=t1.value*t2.value;">
<input type="text" id="t2" onpropertychange="t3.value=t1.value*t2.value;" size="20">
<input type="text" id="t3" size="20" >
</body>
</html>
程序本来很简单,就是网页上的三个文本框的计算,第三个等于第一个和第二个的乘积。

可问题出在我测试的时候。当我在第一个文本框输入8.2,第二个文本框输入25的时候,第三个的结果竟然是204.99999999999997,这个结果让我百思不得其解,做了一些数据转换什么的,结果也是依旧。各位可以试验一下,看看是不是也这样!后来,又试了其他的几组数据,发现这样的情况还有很多,像是:(2.2,25),(9.2,25),(9.2,24)等等...

小可菜鸟一个,程序写的不多,不知道这样的问题大家遇到过没有,是不是我孤陋寡闻了?还请知道原因的大侠不吝赐教,小可这里先谢了!

作者: sk_chin   发布时间: 2011-09-04

精度问题
HTML code

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>新建网页 1</title>
</head>
<body>
<input type="text" id="t1" size="20" onpropertychange="t3.value=Math.round(t1.value*t2.value*1000)/1000;">
<input type="text" id="t2" onpropertychange="t3.value=Math.round(t1.value*t2.value*1000)/1000;" size="20">
<input type="text" id="t3" size="20" >
</body>
</html>

作者: hookee   发布时间: 2011-09-04

可是这样的话,结果总是整数,这也不是我想要的效果!
比如:8.2*24 结果应该是196.8,我希望显示的结果也是196.8!
还有,我困惑的是,为什么是个别的几组数据会出现8.2*25=204.99999999999997,而有些则正常。

作者: sk_chin   发布时间: 2011-09-04

我测试的一些结果:
1.2*25=30
2.2*25=55.00000000000001
3.2*25=80
4.2*25=105
...
8.2*25=204.99999999999997
9.2*25=229.99999999999997
10.2*25=254.99999999999997
11.2*25=280
...
...
11.2*24=268.79999999999995
11.2*23=257.59999999999996
...
11.2*18=201.6
...

为什么有的正常有的不正常?
什么条件下会不正常呢?

作者: sk_chin   发布时间: 2011-09-04

parseInt()了也不行...

作者: fendoudxiaohouzi   发布时间: 2011-09-04