为什么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)等等...
小可菜鸟一个,程序写的不多,不知道这样的问题大家遇到过没有,是不是我孤陋寡闻了?还请知道原因的大侠不吝赐教,小可这里先谢了!
源程序(为了大家能看明白问题,我重新写了一个):
<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 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,而有些则正常。
比如: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
...
为什么有的正常有的不正常?
什么条件下会不正常呢?
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

作者: fendoudxiaohouzi 发布时间: 2011-09-04
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28