设为首页收藏本站

 找回密码
 注册
查看: 4910|回复: 3
打印 上一主题 下一主题

intpart函数bug! [复制链接]

Rank: 4

精华
0
UID
7887
积分
527
帖子
65
主题
23
阅读权限
50
注册时间
2010-3-28
最后登录
2019-11-8
跳转到指定楼层
1#
发表于 2010-6-4 08:53:10 |只看该作者 |倒序浏览
intpart函数bug!
  1. Params

  2. Vars

  3.         Numeric Status(-1.2);
  4.         Numeric tmp;

  5. Begin

  6.         tmp = abs(Status);       //应等于1.2
  7.        
  8.         tmp = tmp-intpart(tmp); //应等于0.2
  9.                
  10.         tmp = tmp*10;            //应等于2
  11.        
  12.         Commentary(text(tmp)); //应等于2
  13.        
  14.         tmp = intpart(tmp);     //应等于2
  15.        
  16.         Commentary(text(tmp)); //应等于2,实际却等于1
  17.        
  18.         tmp = tmp/10;                          //应等于0.2,实际却等于0.1
  19.        
  20.         Commentary(text(tmp)); //应等于0.2,实际却等于0.1
  21.        
  22.         Commentary(text(IntPart(2))); //应该=2,实际也等于2;

  23. End
复制代码

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20901
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
2#
发表于 2010-6-4 09:41:24 |只看该作者
这个是数据底层浮点数的内部存储机制导致的。
尝试使用Floor等其他的函数来避免

使用道具 举报

Rank: 4

精华
0
UID
7887
积分
527
帖子
65
主题
23
阅读权限
50
注册时间
2010-3-28
最后登录
2019-11-8
3#
发表于 2010-6-4 10:46:46 |只看该作者
原帖由 lh948 于 2010-6-4 09:41 发表
测试确实有这个问题,是底层浮点数的内部存储机制导致的。
尝试使用Floor等其他的函数来避免



,还有好几个问题,我至少帮你们测出明确问题3个以上,你们测试部的要感谢我才对。
我说我的程序为什么常常放错,我一点点排查,花了很长时间,才定位到这个地方,真的很费劲。

[ 本帖最后由 brucecolvin 于 2010-6-4 11:05 编辑 ]

使用道具 举报

Rank: 4

精华
0
UID
11216
积分
254
帖子
35
主题
6
阅读权限
50
注册时间
2010-5-30
最后登录
2010-11-18
4#
发表于 2010-6-5 00:57:42 |只看该作者
工程部应该请brucecolvin吃饭~~

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-10 11:04

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部