以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  数值计算的小数问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=37708)

--  作者:hudicaca
--  发布时间:2013/7/9 10:53:00
--  数值计算的小数问题

问题是这样的....两个值相乘.明明是28 * 0.8 =22.4  但是放到textbox 中就变成22.400000000000002了..28 和0.8都是双精度的.怎么避免这个出现,好像换做高精度的就行了,但是我看帮助说不是特殊情况尽量不要用到高精度么???! 我的计算基本都是用到整数 乘以0.8 的....

菜鸟求解,谢谢啊!!.

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:计算.table

[此贴子已经被作者于2013-7-9 10:57:04编辑过]

--  作者:Bin
--  发布时间:2013/7/9 10:57:00
--  
请使用高精度小数

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:计算.table



--  作者:hudicaca
--  发布时间:2013/7/9 10:59:00
--  
但是我看帮助说不是特殊情况尽量不要用到高精度么???! 我的表中计算基本都是用到整数 乘以0.8 的....量也很大....我怕会影响运行速度啊
--  作者:Bin
--  发布时间:2013/7/9 11:00:00
--  
没你想象中的那么大的影响,你可以使用大量数据做下测试.
--  作者:lsy
--  发布时间:2013/7/9 11:06:00
--  
Dim r As Row
r = Tables("表A").Current
Forms("窗口1").Controls("TextBox1").value = Format(r("第一列") * r("第二列"),"#0.00")

--  作者:程兴刚
--  发布时间:2013/7/9 11:06:00
--  
FORMAT()
--  作者:hudicaca
--  发布时间:2013/7/9 11:15:00
--  
format 的话 如果遇到 .9999999999992这种 不就要出现误差了呀
--  作者:Bin
--  发布时间:2013/7/9 11:17:00
--  
四舍五入  http://www.foxtable.com/help/topics/1440.htm
--  作者:hudicaca
--  发布时间:2013/7/9 11:19:00
--  
好吧..还是四舍五入吧....
--  作者:狐狸爸爸
--  发布时间:2013/7/9 11:26:00
--  

表达式的四舍五入:

 

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