最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

vb 浮点数的变换

来源:动视网 责编:小OO 时间:2025-10-01 09:52:48
文档

vb 浮点数的变换

VB的Single数据类型Single(单精度浮点型)变量存储为IEEE32位(4个字节)浮点数值的形式,它的范围在负数的时候是从-3.402823E38到-1.401298E-45,而在正数的时候是从1.401298E-45到3.402823E38。Single的类型声明字符为感叹号(!)。在内存以32位二进制形式存在:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX第1位为符号位第2-9位为阶码位第10-32位为2进制小数尾值即F2^n*1.XXXXXXXXXXXXXX其中
推荐度:
导读VB的Single数据类型Single(单精度浮点型)变量存储为IEEE32位(4个字节)浮点数值的形式,它的范围在负数的时候是从-3.402823E38到-1.401298E-45,而在正数的时候是从1.401298E-45到3.402823E38。Single的类型声明字符为感叹号(!)。在内存以32位二进制形式存在:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX第1位为符号位第2-9位为阶码位第10-32位为2进制小数尾值即F2^n*1.XXXXXXXXXXXXXX其中
VB的Single 数据类型

Single(单精度浮点型)变量存储为 IEEE 32 位(4 个字节)浮点数值的形式,它的范围在负数的时候是从 -3.402823E38 到 -1.401298E-45,而在正数的时候是从 1.401298E-45 到 3.402823E38。Single 的类型声明字符为感叹号 (!)。

在内存以32位二进制形式存在:

XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX

第1位为符号位

第2-9位为阶码位

第10-32位为2进制小数尾值

即F2 ^ n * 1.XXXXXXXXXXXXXX

其中

F为正号或负号(首为为0正数,首位为1负数

n为2-9位组成的BYTE数据值

XXXXXXXXXXXXXX为尾数

VB无专门的内置函数处理2-10进制转换及浮点16进制小数转10进制.

以下代码解决2进制位运算来完成四个十六进制的Byte型转换为浮点数:

Option Explicit

    Dim i As Integer

    Dim j As Integer

    Dim bl As String

    Dim bl_dm As String

    Dim BinData As String

    Dim ccl() As String

    Dim Ccll() As String

    Dim fh As String * 1

    Dim zs As String * 8

    Dim zssz As String

    Dim xs As String * 23

    Dim xs_js(23) As Byte

    Dim xs_hj As Double

    Dim bb_h(1) As String

    Dim bb_hh(1) As String

    Dim bll_0 As String

    Dim single_Data As Single

Private Sub cmdshuru_Click()

    BinData = ""

    bl = UCase(InputBox("输入16进制浮点数=", bl))

    Text1 = bl

    Call Hex_bin '

    fh = Mid(BinData, 1, 1) '取符号

    zs = Mid(BinData, 2, 8) '取指数

    xs = Mid(BinData, 10, 23) '取2进制小数

    Call xsjs '返回10进制浮点小数部分

    Call bin_hex '返回2进制指数部分

    If fh = 0 Then

        single_Data = 2 ^ (Val("&H" & zssz) - 127) * xs_hj

    ElseIf fh = 1 Then

        single_Data = -2 ^ (Val("&H" & zssz) - 127) * xs_hj

    End If

    Text2 = single_Data '

    End Sub

Public Function bin_hex()

    '2-16转换

    bb_h(0) = Mid(zs, 1, 4)

    bb_h(1) = Mid(zs, 5, 4)

    For i = 0 To 1

        If bb_h(i) = "1111" Then

            bb_hh(i) = "F"

        ElseIf bb_h(i) = "1110" Then

            bb_hh(i) = "E"

        ElseIf bb_h(i) = "1101" Then

            bb_hh(i) = "D"

        ElseIf bb_h(i) = "1100" Then

            bb_hh(i) = "C"

        ElseIf bb_h(i) = "1011" Then

            bb_hh(i) = "B"

        ElseIf bb_h(i) = "1010" Then

            bb_hh(i) = "A"

        ElseIf bb_h(i) = "1001" Then

            bb_hh(i) = "9"

        ElseIf bb_h(i) = "1000" Then

            bb_hh(i) = "8"

        ElseIf bb_h(i) = "0111" Then

            bb_hh(i) = "7"

        ElseIf bb_h(i) = "0110" Then

            bb_hh(i) = "6"

        ElseIf bb_h(i) = "0101" Then

            bb_hh(i) = "5"

        ElseIf bb_h(i) = "0100" Then

            bb_hh(i) = "4"

        ElseIf bb_h(i) = "0011" Then

            bb_hh(i) = "3"

        ElseIf bb_h(i) = "0010" Then

            bb_hh(i) = "2"

        ElseIf bb_h(i) = "0001" Then

            bb_hh(i) = "1"

        ElseIf bb_h(i) = "0000" Then

            bb_hh(i) = "0"

        End If

    Next i

    zssz = bb_hh(0) & bb_hh(1)

End Function

Public Function Hex_bin()

    '16-2转换

    ReDim ccl(1 To Len(bl))

    ReDim Ccll(1 To Len(bl))

    For i = 1 To Len(bl)

        ccl(i) = Mid(bl, i, 1)

    Next i

    For j = 1 To Len(bl)

        bl = ccl(j)

        If bl = "F" Then

            bl_dm = "1111"

        ElseIf bl = "E" Then

            bl_dm = "1110"

        ElseIf bl = "D" Then

            bl_dm = "1101"

        ElseIf bl = "C" Then

            bl_dm = "1100"

        ElseIf bl = "B" Then

            bl_dm = "1011"

        ElseIf bl = "A" Then

            bl_dm = "1010"

        ElseIf bl = "9" Then

            bl_dm = "1001"

        ElseIf bl = "8" Then

            bl_dm = "1000"

        ElseIf bl = "7" Then

            bl_dm = "0111"

        ElseIf bl = "6" Then

            bl_dm = "0110"

        ElseIf bl = "5" Then

            bl_dm = "0101"

        ElseIf bl = "4" Then

            bl_dm = "0100"

        ElseIf bl = "3" Then

            bl_dm = "0011"

        ElseIf bl = "2" Then

            bl_dm = "0010"

        ElseIf bl = "1" Then

            bl_dm = "0001"

        ElseIf bl = "0" Then

            bl_dm = "0000"

        Else:

            bl_dm = ""

        End If

        Ccll(j) = bl_dm

        BinData = BinData & Ccll(j)

    Next j

End Function

Private Sub Form_Load()

    Text1 = "": Text2 = ""

End Sub

Public Function xsjs()

    xs_hj = 1

    For i = 1 To 23

        xs_js(i) = Mid(xs, i, 1)

        xs_hj = xs_hj + Val(xs_js(i)) / (2 ^ (1 * i))

    Next

End Function

文档

vb 浮点数的变换

VB的Single数据类型Single(单精度浮点型)变量存储为IEEE32位(4个字节)浮点数值的形式,它的范围在负数的时候是从-3.402823E38到-1.401298E-45,而在正数的时候是从1.401298E-45到3.402823E38。Single的类型声明字符为感叹号(!)。在内存以32位二进制形式存在:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX第1位为符号位第2-9位为阶码位第10-32位为2进制小数尾值即F2^n*1.XXXXXXXXXXXXXX其中
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top