我以为这是一个简单的问题,但是我很难找到答案:
我知道Single和Double数据类型存储浮点数。但是我不明白他们可以代表的最大位数?
例如,如果我在此简单宏中使用Single数据类型:
uglifyjs-webpack-plugin
结果是3.333333
有7位数字。但是,当您查看Single可以容纳的范围时-表示它可以容纳更多位数。
与Double类型相同。我将变量更改为Double,则结果为3.33333333333333(15位数字),但是Double可以容纳更多数字吗?
我很困惑。
答案 0 :(得分:3)
单个以4字节存储数据,它们允许7位精度。 将数据以8字节的形式加倍存储,则允许15位精度。
这个答案VBA Double vs Single rounding可能会更好地解释。
答案 1 :(得分:2)
精度最高限制为15个有效数字。其他答案提到“单身”为7。
如果您改为打印到工作表,则会看到以下内容:
Public Sub test()
Dim s As Single
Dim s2 As Double
s = 10 / 3
s2 = 10 / 3
[A1] = "Single"
[B1] = s
[A2] = "Double"
[B2] = s2
[B1:B2].NumberFormat = "0.000000000000000000"
End Sub
关于您以后关于精度决定的问题;对此有一个国际标准。
浮点算术的IEEE标准(IEEE 754)是 1985年制定的浮点计算技术标准 由电气和电子工程师协会(IEEE)提供。的 该标准解决了在不同浮点中发现的许多问题 使得它们难以可靠且便携地使用的实现。 现在,许多硬件浮点单元都使用IEEE 754标准。
有人可以对此进行纠正,但我相信这是当前的标准。
为您评论re单精度Wiki有一个很好的解释here。
您可以访问标准的here。
答案 2 :(得分:0)
我在网上找到了一篇很好的文章,很好地解释了浮点数:
https://floating-point-gui.de/formats/fp/
据我到目前为止的了解:
我的困惑源于一个事实,即我不了解数据类型VERSUS存储多少位数与该数据类型可以准确计算并返回多少位数之间存在差异。这是正确的吗?
例如:Single数据类型需要4个字节(32位)的存储空间。 24位分配给有效数(带符号),而8位分配给指数。 具有“单一”数据类型的值的计算将始终返回7个有效数字,因为这是可以保证的精度水平?
我希望我能正确理解...