我似乎无法打印文本以获得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的宏