关于Int()函数的问题

Greaitm 2003-12-19 05:02:23
有一个奇怪的问题:
请高手指教:
在vb里
#16:20:00#/#00:01:00# 等于 980
Clng(#16:20:00#/#00:01:00#)也等于980
int(#16:20:00#/#00:01:00#) 却等于979

为什么???
...全文
139 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Greaitm 2003-12-22
  • 打赏
  • 举报
回复
可能是intel跟amd的CPU不同吧,不知道有没有人正是这点?
rainstormmaster 2003-12-21
  • 打赏
  • 举报
回复
我的计算机测试都是980
win98 se
vb6
「已注销」 2003-12-21
  • 打赏
  • 举报
回复
我测试的结果是980
测试系统 WinXP 赛扬800 VB6
不存在所说的问题
而且(#16:20:00#/#00:01:00#)的结果是980.000000000001
jhzhou882 2003-12-20
  • 打赏
  • 举报
回复
怀疑(#16:20:00#/#00:01:00#)的结果是
979.99999999999999999999999999999999999999999999999999999循环

如果转化成DOUBLE因为超过精度.
最终还是被转化为 980
landongfang 2003-12-19
  • 打赏
  • 举报
回复
Dim MyNumber
MyNumber = Int(99.8) ' Returns 99.

jhzhou882 2003-12-19
  • 打赏
  • 举报
回复
怀疑(#16:20:00#/#00:01:00#)的结果是
979.99999999999999999999999999999999999999999999999999999循环
jhzhou882 2003-12-19
  • 打赏
  • 举报
回复
Int(#16:20:00#/#00:01:00#) 却等于979
一个是舍掉小数 一个是四舍五入

SoHo_Andy 2003-12-19
  • 打赏
  • 举报
回复
呵呵,知道问题在哪里就好,以后不随便使用int就好了
jhzhou882 2003-12-19
  • 打赏
  • 举报
回复
CInt(#16:20:00#/#00:01:00#) 却等于980
Greaitm 2003-12-19
  • 打赏
  • 举报
回复
而且我用int(cdbl(#16:20:00#/#00:01:00#))得出的是980
我是要算出分钟数,所以用Clng或者Cint都不符和我的要求,但用int出现这个情况
害我调试了半天。
online 2003-12-19
  • 打赏
  • 举报
回复
我的计算机测试都是980
win2000 pro
vb6
SoHo_Andy 2003-12-19
  • 打赏
  • 举报
回复
cbl() 为 CDbl()
SoHo_Andy 2003-12-19
  • 打赏
  • 举报
回复
可能这个int函数有问题,也可能是数据类型运算时我们看到的数值和
实际内存中的数值不同造成的

比如我用cbl() 或者 和你一样直接计算 #16:20:00#/#00:01:00# 也都是980

只要加了int 值就是979,

Int 函数返回小于或等于该参数之最大整数,如果这句描述没错的话,
#16:20:00#/#00:01:00# 这个结果本身一定不是整数的
liyan010 2003-12-19
  • 打赏
  • 举报
回复
学习 & 记录
Greaitm 2003-12-19
  • 打赏
  • 举报
回复
那就奇怪了 我用的是vb+sp5 win2k+sp4 amd1700+ nForce芯片的主板
我算#16:20:00#/#00:01:00# 就等于 980,后面没有小数了
SoHo_Andy 2003-12-19
  • 打赏
  • 举报
回复
测试
Private Sub Command1_Click()
MsgBox (#4:20:00 PM# / #12:01:00 AM#)
MsgBox CLng(#4:20:00 PM# / #12:01:00 AM#)
MsgBox Int(#4:20:00 PM# / #12:01:00 AM#)

MsgBox CInt(#4:20:00 PM# / #12:01:00 AM#)
End Sub

你使有CInt就不会有问题,区别在于

CInt 函数 Integer -32,768 至 32,767,小数部分四舍五入
Int 函数 返回参数的整数部分
TimLee✿ 2003-12-19
  • 打赏
  • 举报
回复


学习
「已注销」 2003-12-19
  • 打赏
  • 举报
回复
没有啊!我讲你所写的在VB中调试结果都是980
#16:20:00#/#00:01:00# 的结果是980.000000000001
所以不存在你说的问题

7,763

社区成员

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

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