| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 809 人关注过本帖
标题:int(11/10-0.1)和fix(11/10-0.1)为什么都是等于0?
只看楼主 加入收藏
dsq_0
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-4-29
结帖率:100%
收藏
 问题点数:0 回复次数:11 
int(11/10-0.1)和fix(11/10-0.1)为什么都是等于0?
我有int(11/10-0.1)和fix(11/10-0.1)为什么都是等于0????????
  dim i as integer
    i=11/10-0.1
    msgbox int(i)
    msgbox fix(i)
它们都是1
以上是在VB6.0中实验????
不明白为什么,请高手来解决一下。。。
2013-03-15 19:24
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:0 
不懂VB...

仰望星空...........不忘初心!
2013-03-15 19:26
yz1025
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:491
专家分:919
注 册:2012-10-26
收藏
得分:0 
不懂VB...
图片附件: 游客没有浏览图片的权限,请 登录注册

不要投我
2013-03-15 22:59
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
int  取一个浮点数的整数部分。
int 正数,负数,都是得到小数点前面的部分。

fix 取一个不大小这个浮点数的整数。
fix 正数时,与 int 结果相同。
fix 负数时,与 int 相差1 。

例:
   int(3.14) = 3
   fix(3.14) = 4

   int(-3.14) = -3
   fix(-3.14) = -4

授人于鱼,不如授人于渔
早已停用QQ了
2013-03-16 09:32
dsq_0
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-4-29
收藏
得分:0 
难道没有人解答吗?
2013-03-16 21:45
dsq_0
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-4-29
收藏
得分:0 
ding
2013-03-17 21:15
zhengang1026
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:136
专家分:409
注 册:2013-2-6
收藏
得分:0 
是有点奇怪,
a=Int(11 / 10 - 0.1)
Debug.Prin a
得到1
Debug.Prin Int(11 / 10 - 0.1)
得到0
啥原因?不清楚,请高手讲课。
2013-03-18 08:53
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
我二个结果都得到的是 0
==============
这个计算结果,与 二进制转十进制 舍入误差有关,与数据类型有关。
(11 / 10 - 0.1)
因为 0.1 是浮点数,所以整个表达式按浮点进行运算。然后运算结果再进行后面的操作。
结果是 1,但有可能这个 1 在内存里是 0.9999999999999
这个就是二进制转十进制存在的舍入误差,在 excel 里也有时能看到这种的情况。

不光VB6会出现这种情况,在其它语言里,只有不是使用 十进制计算并且使用十进制修正指令进行操作的汇编,并且是整数数据的情况外,均有可能出现。
汇编里,数据的 十进制计算,有几个专门的指令,那个是 定点数计算用的,不一定是整数。如金融数据类型,就是一个定点数,永远只有小数点后4位。

授人于鱼,不如授人于渔
早已停用QQ了
2013-03-18 10:21
dsq_0
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-4-29
收藏
得分:0 
?11 / 10 - 0.1
 1
? Int(11 / 10 - 0.1)
 0
2013-03-18 18:47
yz1025
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:491
专家分:919
注 册:2012-10-26
收藏
得分:0 
要有Int()和Fix()的源码才知道吧~不然只能用猜的~

不知道当初学校教的~关于C代码在编译器里处理成组合语言~
(以前叫这当下的部分档案为中间档~考试的时候算的要死要活的~人工算~)
再Link外部函式成执行档的过程~能否解释~毕竟传说VB是C写的~

不要投我
2013-03-18 20:20
快速回复:int(11/10-0.1)和fix(11/10-0.1)为什么都是等于0?
数据加载中...
 
   



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

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