以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  有小数位的减法也必须要用高精度小数吗?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=74013)

--  作者:sky-18
--  发布时间:2015/8/31 15:35:00
--  有小数位的减法也必须要用高精度小数吗?
Dim a As Double
Dim b As Double
Dim c As Double
a = 93218.4
b = 100000
c = b - a
Output.show(c)
最后结果是 2153.60000000001。
结果明显是错的呀。
帮助上说double在做比较的时候会出现“1<> 1”的情况,但并没有说显示结果会出现这种错误啊。
但是换成高精度小数后结果就没问题了。
不过帮助文件上是不推荐一般的运算用高精度的啊。
莫非是我哪里没搞对。
求老师们指点

--  作者:Hyphen
--  发布时间:2015/8/31 15:52:00
--  

http://www.foxtable.com/help/topics/1829.htm

 

计算时临时转换为高精度c = CDec(b) - CDec(a)


--  作者:有点蓝
--  发布时间:2015/8/31 15:53:00
--  
四舍五入到6位或者decimal代替
http://www.foxtable.com/help/index.html?n=1829.htm
--  作者:sky-18
--  发布时间:2015/8/31 16:05:00
--  
用高精度代替的话会不会让运算量太大?
--  作者:大红袍
--  发布时间:2015/8/31 16:19:00
--  
以下是引用sky-18在2015/8/31 16:05:00的发言:
用高精度代替的话会不会让运算量太大?

 

看3楼,舍去后面的就行。