VB的数据类型转换问题

TrouGer 2006-12-08 10:23:00
VB把浮点数赋值给整型是怎么样的机制?
dim c as long
c=2.5
(msgbox c 显示2)
c=3.5
(msgbox c 显示4)
于是我就晕了。。。求救
...全文
181 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hui_hui_2007 2006-12-10
  • 打赏
  • 举报
回复
记得有次实验出现过不符合“四舍六入,五取双”的规律的,但是现在想不起来是在什么情况下了。请问这个规律是官方说明的吗?有没有更可靠点的信息?谢谢
---------------
这是确定的。不用怀疑,呵呵。这样更准确些。具体在网上baidu一下吧。
TrouGer 2006-12-10
  • 打赏
  • 举报
回复
记得有次实验出现过不符合“四舍六入,五取双”的规律的,但是现在想不起来是在什么情况下了。请问这个规律是官方说明的吗?有没有更可靠点的信息?谢谢
dabie 2006-12-09
  • 打赏
  • 举报
回复
vb的四舍五入其实是四舍六入;“5”:奇进偶不进
Winters_lee 2006-12-09
  • 打赏
  • 举报
回复
IEEE浮点数的表示方法你可以看看的,并不是你想象的那么简单,但是你可以用四舍五入法搞定:

Public Function fRound(num As Variant, n As Long) As String
fRound = Format(num, IIf(n > 0, "0." & String(n, "0"), "0"))
End Function

Private Sub Command1_Click()
Dim a As Double
a = 1234.56789
Debug.Print Fix(a)
Debug.Print Int(a)
Debug.Print CInt(a)
Debug.Print CLng(a)
Debug.Print fRound(a, 0)
Debug.Print fRound(a, 3)
End Sub

执行後在 VB 的即时运算视窗出现以下结果:

1234
1234
1235
1235
1235
1234.568



hui_hui_2007 2006-12-09
  • 打赏
  • 举报
回复
VB自动转换了,用的是四舍五入的方式,不过VB中的四舍五入实质上是:“四舍六入,五取双”。这是最严格的方式的。
VB.Net 2006-12-09
  • 打赏
  • 举报
回复
支持dabie() 的说法
m00ners 2006-12-08
  • 打赏
  • 举报
回复
关注。帮顶

7,763

社区成员

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

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