Excel和浮点表示

时间:2018-02-23 15:37:08

标签: excel excel-vba vba

我似乎无法打印文本以获得excel中数字的精确浮点单个表示。

假设我在单元格中输入数字3.1,单浮点精度的数字实际为3.099999904632568359375E0,而双浮点精度为3.10000000000000008881784197001E0

但是,如果我将单元格设置为带有30个小数位的数字格式,我总是看到3.1000000000000000000000000。

然后我创建了一个宏("内存转换"从SO上的其他答案中获取)

Type ub4
    b3 As Byte: b2 As Byte: b1 As Byte: b0 As Byte
End Type

Type Float
    r As Single
End Type

Public Sub Test()
    Dim Value As Float
    Dim Text As String
    Dim intval As ub4

    Value.r = CSng(Sheet1.Cells(1, 4).Text)

    Sheet1.Cells(1, 5).Value = Format(Value.r, "#.000000000000000000")

    LSet intval = Value

    Text = "Byte 0: " + Hex(intval.b0) + " Byte 1: " + Hex(intval.b1) + " Byte 2: " + Hex(intval.b2) + " Byte 3: " + Hex(intval.b3)

    Debug.Print Text

End Sub

上面的宏正确显示单精度浮点的内存表示是正确的(0x40466666)字节0:40字节1:46字节2:66字节3:66

我想让我的E1单元格包含3.099999904632568359375而不是它总是显示3.1000000000000000000

有没有人知道如何打印实际的浮点值而不是人性可读的圆形值?

编辑:修复对单元格E5的引用以匹配使用E1的宏

0 个答案:

没有答案