好吧,今天终于有时间也来验证一下。
先放我的验证代码:
当=214748时,二个long 是 2147480000 和 0
对应十六进制数为: 7FFFF1C0 和 0
当=214749时,二个long 是-2147477296 和 0
对应十六进制数为: 800018D0 和 0
结论是:因 Currency 内部定义为无符号数,所以没有符号位。
Currency 保存的数据是 数值 * 10000 。
214749 ,乘 10000 以后,按 long 解释,变成负数的。
无符号数,定义请参考 C语言。
先放我的验证代码:
程序代码:
Option Explicit '二个类型的定义,Lset命令要求 Private Type CType a As Currency End Type Private Type Ltype a As Long b As Long End Type Private Sub Command1_Click() Dim a As CType Dim b As Ltype Dim s As String a.a = Val(Text1.Text) '读值 LSet b = a '放入long s = b.a & vbCrLf & b.b '按10 进制显示 s = s & vbCrLf & Hex(b.a) & vbCrLf & Hex(b.b) '按16进制显示 Text2.Text = s End Sub
当=214748时,二个long 是 2147480000 和 0
对应十六进制数为: 7FFFF1C0 和 0
当=214749时,二个long 是-2147477296 和 0
对应十六进制数为: 800018D0 和 0
结论是:因 Currency 内部定义为无符号数,所以没有符号位。
Currency 保存的数据是 数值 * 10000 。
214749 ,乘 10000 以后,按 long 解释,变成负数的。
无符号数,定义请参考 C语言。
授人于鱼,不如授人于渔
早已停用QQ了