VB6中如何声明MAX_DOUBLE的值?
- 内容介绍
- 文章标签
- 相关推荐
本文共计366个文字,预计阅读时间需要2分钟。
MSDN为VB6提供了丰富的帮助。浮点数可以表示为mmmEeee或mmmDeee的形式,其中mmm是尾数,eee是指数(10的幂)。单精度数据类型能表示的最大正值是3.402823E+38,即3.4乘以10的38次方。
根据MSDN对VB6的帮助Floating-point values can be expressed as mmmEeee or mmmDeee, in which mmm is the mantissa and eee is the exponent (a power of 10). The highest positive value of a Single data type is 3.402823E+38, or 3.4 times 10 to the 38th power; the highest positive value of a Double data type is 1.79769313486232D+308, or about 1.8 times 10 to the 308th power. Using D to separate the mantissa and exponent in a numeric literal causes the value to be treated as a Double data type. Likewise, using E in the same fashion treats the value as a Single data type.
现在在VB6 IDE中我试图输入它
const MAX_DOUBLE as Double = 1.79769313486232D+308
但是,一旦我离开该行,IDE就会抛出错误6(溢出)
An overflow results when you try to make an assignment that exceeds the limitations of the target of the assignment. …
那么如何定义MAX_DOUBLE(以及MIN_DOUBLE)?
它必须是一个Const吗?通过使用Byte数组中的CopyMemory设置正确的位模式,可以将MAX_DOUBLE的精确值转换为变量.Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) Dim Max As Double Dim Idx As Long Dim Bits(0 To 7) As Byte For Idx = 0 To 5 Bits(Idx) = 255 Next Bits(6) = 239 ' = 11101111 Bits(7) = 127 For Idx = 0 To 7 CopyMemory ByVal VarPtr(Max) + Idx, Bits(Idx), 1 Next Debug.Print Max
编辑:我忘了你也问过MIN_DOUBLE,这更容易.
Dim Min As Double Dim Bits As Byte Bits = 1 CopyMemory ByVal VarPtr(Min), Bits, 1 Debug.Print Min
本文共计366个文字,预计阅读时间需要2分钟。
MSDN为VB6提供了丰富的帮助。浮点数可以表示为mmmEeee或mmmDeee的形式,其中mmm是尾数,eee是指数(10的幂)。单精度数据类型能表示的最大正值是3.402823E+38,即3.4乘以10的38次方。
根据MSDN对VB6的帮助Floating-point values can be expressed as mmmEeee or mmmDeee, in which mmm is the mantissa and eee is the exponent (a power of 10). The highest positive value of a Single data type is 3.402823E+38, or 3.4 times 10 to the 38th power; the highest positive value of a Double data type is 1.79769313486232D+308, or about 1.8 times 10 to the 308th power. Using D to separate the mantissa and exponent in a numeric literal causes the value to be treated as a Double data type. Likewise, using E in the same fashion treats the value as a Single data type.
现在在VB6 IDE中我试图输入它
const MAX_DOUBLE as Double = 1.79769313486232D+308
但是,一旦我离开该行,IDE就会抛出错误6(溢出)
An overflow results when you try to make an assignment that exceeds the limitations of the target of the assignment. …
那么如何定义MAX_DOUBLE(以及MIN_DOUBLE)?
它必须是一个Const吗?通过使用Byte数组中的CopyMemory设置正确的位模式,可以将MAX_DOUBLE的精确值转换为变量.Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) Dim Max As Double Dim Idx As Long Dim Bits(0 To 7) As Byte For Idx = 0 To 5 Bits(Idx) = 255 Next Bits(6) = 239 ' = 11101111 Bits(7) = 127 For Idx = 0 To 7 CopyMemory ByVal VarPtr(Max) + Idx, Bits(Idx), 1 Next Debug.Print Max
编辑:我忘了你也问过MIN_DOUBLE,这更容易.
Dim Min As Double Dim Bits As Byte Bits = 1 CopyMemory ByVal VarPtr(Min), Bits, 1 Debug.Print Min

