请教一个简单问题:10-9.2=?

kurama 2003-09-14 10:26:14
这是偶然发现的,不知为什么
10-9.1=.1
10-9.2=.800000000000001
10-9.3=.699999999999999
10-9.4=.6
10-9.5=.5
...
...全文
80 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
kurama 2003-09-15
  • 打赏
  • 举报
回复
明白了,谢了哈
viena 2003-09-15
  • 打赏
  • 举报
回复
浮点数表数范围大,但不精确;定点数精确,但表数范围小
viena 2003-09-15
  • 打赏
  • 举报
回复
如果你需要绝对精确,不涉及除法、开方等运算,那么可以用先变成整数(乘以10的倍数)进行运算,算完后再加小数点。
kurama 2003-09-15
  • 打赏
  • 举报
回复
两个数的数据类型都改为Double型也不行
kurama 2003-09-15
  • 打赏
  • 举报
回复
那要单独处理了
lzj34 2003-09-15
  • 打赏
  • 举报
回复
把两个数的数据类型都改为Double型吧
viena 2003-09-15
  • 打赏
  • 举报
回复
没有错啊,浮点运算本身就不可能精确,已经精确到小数点后13位了,难道还不能满足你的要求?
kurama 2003-09-15
  • 打赏
  • 举报
回复
用FormatNumber(x - y, 2)就限定了显示格式啊。如果编写一个简单的计算器程序,格式不固定,这样用就不好吧。
cowley 2003-09-15
  • 打赏
  • 举报
回复
这是数据类型的问题,只要把数据类型改正确就不会有这样的问题了!
xuwuyu 2003-09-14
  • 打赏
  • 举报
回复
呵呵,我刚才也试了下,也是有这个问题!
FormatNumber(x - y, 2),试试这个吧,应该没问题了,呵呵
kurama 2003-09-14
  • 打赏
  • 举报
回复
可能不是数据类型的问题,这是在立即窗口中得到的结果;
改了也不行:
Private Sub Form_Activate()
Dim x, y As Double
x = 10
y = 9.2
Print x - y
End Sub
并且只有 10-9.2=.800000000000001
10-9.3=.699999999999999
有问题
foreverforyou 2003-09-14
  • 打赏
  • 举报
回复
把数据类型改为Double型吧
xuwuyu 2003-09-14
  • 打赏
  • 举报
回复
我也遇到过的问题!后来该了数据类型,就对了!

7,762

社区成员

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

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