简单而又不简单的问题,找到解决方法就会变得很简单…

vivific 2003-05-24 02:53:15
X,Y,Z 三个变量. 均为float型.
在执行X-Y-Z 时.
X输入为50, Y输入为40.7. Z输入为9.3.
当判断X-Y>Z时, 一直为TRUE 状态,
中断实时运算时,发现X-Y-Z=-3.5527136788005E-15
象这样计算器过于聪明的现象如何杜绝啊…有时真得防不甚防啊.特别是数据多时,进行加加减减,最后又取几位或无条件舍掉.总会出现小小的误差.而对财务来说,账账平衡会惹得你无法平衡.真得很难受.可是计算过程中又不能取小数字数.那该如何办啊…请高手指教…或者遇到过此种问题的网友指教…OK! Thanks!
...全文
108 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
胖河马 2003-05-26
  • 打赏
  • 举报
回复
Currency就是货币类型
vivific 2003-05-26
  • 打赏
  • 举报
回复
To Reticence2197
货币类型可以吗?我这个问题又不仅仅是与货币有关.有时也仅仅只是一般数据而已.
vivific 2003-05-26
  • 打赏
  • 举报
回复
to bdhh(slient)
Currency是什么类型?为什么SQL中没有?
Reticence2197 2003-05-25
  • 打赏
  • 举报
回复
货币类型比较好
pasl 2003-05-25
  • 打赏
  • 举报
回复
同意 Maconel(Maconel) 同志的观点
浮点数的相等比较时必须设定一个精度的
胖河马 2003-05-25
  • 打赏
  • 举报
回复
将float换成Currency
Maconel 2003-05-25
  • 打赏
  • 举报
回复
0.00001使我随便说的,你自己在调试嘛
vivific 2003-05-24
  • 打赏
  • 举报
回复
以上都不行的.太多变量的话.用0.00001去判断那是不可能的.再说有时可能只有一个变量,它实际输入是8.而我汇整资料时,因用了一无条件舍去函数,就变成7啦…
csdngoodnight 2003-05-24
  • 打赏
  • 举报
回复
能不能限制小数到具体位数呢?比如限保留2位小数或3位4位。会不会影响结果?
在结果输出时将其格式一下好不好?
比如用FormatNumber函数
语法;
FormatNumber(Expression[,NumDigitsAfterDecimal[,IncludeLeadingDigit[,UseParensFor
NegativeNumbers[,GroupDigits]]]])
你看着试试吧。
Maconel 2003-05-24
  • 打赏
  • 举报
回复
在计算后加个判断

result=x-y-z
if result<0.00001 then result=0

这个0.00001是误差精度,你自己可以试着改,合适为止

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧