标题:两个精度数比较
只看楼主
linjirongll
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2008-3-26
结帖率:0
已结贴  问题点数:20 回复次数:6 
两个精度数比较
<%
a=11111111111111102.21
b=11111111111111102.2

if a>= b then
    response.Write "OK"
    else
    response.Write "no"
    end if
%>
输入的永远都是OK


请问怎么样实现精度比较啊。。

用过cdbl(a)>=cdbl(b)也不行,输出的还是OK

急求帮助,,,,,
搜索更多相关主题的帖子: 精度 
2009-07-27 10:59
mgmt_asp
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:124
专家分:158
注 册:2009-7-26
得分:10 
不懂- -看看..

[[it] 本帖最后由 mgmt_asp 于 2009-7-27 12:15 编辑 [/it]]
2009-07-27 12:12
mgmt_asp
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:124
专家分:158
注 册:2009-7-26
得分:0 
找到了,用formatnumber试试
a=formatnumber(11111111111111102.21,2)
b=formatnumber(11111111111111102.2,2)
这样试了下,可以比较大小,不知是不是你想要的
其中:
formatnumber(11111111111111102.21)是要比较的数字
formatnumber(2)是小数点后保留的位数(不足两位时补0)
希望对你有所启发
2009-07-27 12:27
linjirongll
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2008-3-26
得分:0 
还是不行啊兄弟。。
2009-07-27 13:04
mgmt_asp
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:124
专家分:158
注 册:2009-7-26
得分:0 
<%
a=formatnumber(11111111111111102.21,2)
b=formatnumber(11111111111111102.2,2)

if a < b then
    response.Write "OK"
    else
    response.Write "no"
    end if
%>

运行显示 no

怎么不行呢
2009-07-27 16:13
linjirongll
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2008-3-26
得分:0 
你试下把b=formatnumber(11111111111111102.25,2)
看结果是什么就知道了
2009-07-27 17:07
水濂山人
Rank: 4
来 自:广东东莞
等 级:业余侠客
帖 子:169
专家分:236
注 册:2009-6-5
得分:10 
超过精度范围之外的所谓高精度的比较,只能采取字符比较,这是奥赛的比赛项目。高位数字运算,也是此法。(例如圆周率的运算。)
你把源代码变成:
<%
a=11111111111111102.21
b=11111111111111102.2
response.Write a
response.Write b
if a>= b then
    response.Write "OK"
    else
    response.Write "no"
    end if
%>
就知道15位以上,肯定是超出了精度。此时比较后面的尾数,已经没有意义了。除非变成字符串进行比较。

山人无能,唯隐山庄;闲雅之余,唯享e网。
2009-07-28 07:30



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-280667-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025948 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved