我的编译器告诉我Dim nextButton As New ImageButton
With nextButton
.ID = "nextButton" & directionID.ToString
AddHandler .Click, AddressOf directionPath_Click
End With
的大小是16字节,这意味着它可以代表一个数字sizeof(long double)
。现在,我想知道精度可以处理多少位数。例如,如果2^128
,x= 0.1234567812345678
可以long double
确定x
的确切精度吗?
谢谢
答案 0 :(得分:5)
header float.h
包含一些宏,用于描述不同浮点数据类型的精度;例如LDBL_MANT_DIG
为您提供long double
尾数中的二进制数字。
如果您不理解浮点数的格式,建议您阅读What Every Computer Scientist Should Know About Floating-Point Arithmetic。
答案 1 :(得分:0)
我想知道精度可以处理多少位数。
LDBL_DIG
中的 <float.h>
是将从文本转换为long double
的最小有效小数位数。您的平台至少10个,可能是18个左右。 0.1234567812345678
和123.4567812345678
有16位有效小数。
我的编译器告诉我sizeof(long double)的大小是16字节,这意味着它可以代表一个数字上升2 ^ 128
如果long double
是一个整数,那么它可能意味着类似的东西,但浮点数是分布的logarithmically。此外,某些系统不会将所有16个字节用于数据。有些是填充。 @unwind @Sven Marnach。使用<float.h>
中的值来表征您的平台正在使用的long double
。
如果
x= 0.1234567812345678
,long double
可以确定x
的确切精确度吗?
不,除非您使用的是使用十进制浮点的罕见平台。
大多数平台使用二进制浮点。因此,除非数字可以表示为精确的2的幂之和,例如42.125,否则保存为long double
的值将是附近的近似值。代码会将文本0.1234567812345678
转换为最近的 long double
,其中可能具有0.1234567812345677972896140772718354128301143646240234375
的确切值。