Почему отдельные данные в vba могут генерироваться из 8 байт?
Мой код VBA приведен ниже, и я думаю, что не смог получить одинарную и двойную часть vba, но в соответствии с int, long и байтовой логикой результат нормальный Где я ошибаюсь при определении максимального значения одинарных и двойных?
Sub test()
Debug.Print String(65535, vbCr) ' clear
Const MaxByte As Long = (2 ^ 7) - 1
Debug.Print "Byte, [1 Byte (0...7 bit)]: "; MaxByte
Const MaxInt As Integer = (2 ^ 15) - 1
Debug.Print "Integer, [2 Byte (0..15 bit)]: "; MaxInt
Const MaxLong As Long = (2 ^ 31) - 1
Debug.Print "Long, [4 Byte (0..31 bit)]: "; MaxLong
' But it works with 0-127 bit?
Const MaxSingle As Single = (2 ^ 127) - 1
Debug.Print "Single, [4 Byte (0..31 bit)]: "; MaxSingle
' But it works with 0-1023 bit?
Const MaxDouble As Double = (2 ^ 1023) - 1
Debug.Print "Double, [8 Byte (0..63 bit)]: "; MaxDouble
Debug.Print "Decimal Sensetivity > Single: "; CSng(1 / 3)
Debug.Print "Decimal Sensetivity > Double: "; CDbl(1 / 3)
End Sub
Результаты в ближайшем окне
Byte, [1 Byte (0...7 bit)]: 127
Integer, [2 Byte (0..15 bit)]: 32767
Long, [4 Byte (0..31 bit)]: 2147483647
Single, [4 Byte (0..31 bit)]: 1,701412E+38
Double, [8 Byte (0..63 bit)]: 8,98846567431158E+307
Decimal Sensetivity > Single: 0,3333333
Decimal Sensetivity > Double: 0,333333333333333