|
|
|
<P>初来乍到,送上一点薄礼,贻笑大方了!!!!</P><P>'函数将十进制数转化为二进制<BR>Private Function Bina(x As Double) As Double<BR>Dim a As Byte, b As Byte, i As Byte<BR>Dim xL As Long, xR As Single, sL As String, sR As String<BR>xL = Abs(Fix(x)) '整数部分<BR>xR = Abs(x) - Abs(Fix(x)) '小数部分<BR>'整数部分<BR>Do While xL > 0<BR>a = xL Mod 2: xL = xL \ 2<BR>sL = Trim(Str$(a)) & sL<BR>Loop<BR>'小数部分<BR>Do Until i = 30 '精度为小数点后30位,可以自已定<BR>b = Fix(xR * 2)<BR>xR = xR * 2 - b<BR>i = i + 1<BR>sR = sR & Trim(Str(b))<BR>Loop<BR>Bina = Val(sL & "." & sR) * Sgn(x)<BR>End Function<BR>'函数将二进制数转化为十进制<BR>Private Function Deci(x As Double) As Double<BR>Dim a As String, b As String, i As Long, j As Byte, k As Long, l As Double<BR>Dim xL As Long, strX As String<BR>strX = Str(Abs(x))<BR>If Abs(x) > Abs(Fix(x)) Then<BR> i = InStr(1, strX, ".")<BR>Else<BR> i = Len(strX) + 1<BR>End If<BR>a = Left(strX, i - 1) '整数部分<BR>b = Mid(strX, i + 1) '小数部分<BR>'整数部分<BR>For j = 1 To i - 1<BR>k = k + Val(Mid(a, j, 1)) * (2 ^ (i - 1 - j))<BR>Next j<BR>'小数部分<BR>For j = 1 To Len(b)<BR>l = l + Val(Mid(b, j, 1)) * (2 ^ (-1 * j))<BR>Next j<BR>Deci = (k + l) * Sgn(x)<BR>End Function</P> |
|