找回密码
 立即注册
搜索
热搜: rtk 全站仪 航测
查看: 459|回复: 1

[分享]自已写的二进制、十进制转换函数

[复制链接]

主题

0

回帖

44

积分

新手上路

积分
44
发表于 2004-8-25 01:31:57 | 显示全部楼层 |阅读模式
<P>初来乍到,送上一点薄礼,贻笑大方了!!!!</P><P>&#39;函数将十进制数转化为二进制<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)) &#39;整数部分<BR>xR = Abs(x) - Abs(Fix(x)) &#39;小数部分<BR>&#39;整数部分<BR>Do While xL &gt; 0<BR>a = xL Mod 2: xL = xL \ 2<BR>sL = Trim(Str$(a)) &amp; sL<BR>Loop<BR>&#39;小数部分<BR>Do Until i = 30&nbsp; &#39;精度为小数点后30位,可以自已定<BR>b = Fix(xR * 2)<BR>xR = xR * 2 - b<BR>i = i + 1<BR>sR = sR &amp; Trim(Str(b))<BR>Loop<BR>Bina = Val(sL &amp; &quot;.&quot; &amp; sR) * Sgn(x)<BR>End Function<BR>&#39;函数将二进制数转化为十进制<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) &gt; Abs(Fix(x)) Then<BR>&nbsp;&nbsp;&nbsp; i = InStr(1, strX, &quot;.&quot;)<BR>Else<BR>&nbsp;&nbsp;&nbsp; i = Len(strX) + 1<BR>End If<BR>a = Left(strX, i - 1) &#39;整数部分<BR>b = Mid(strX, i + 1) &#39;小数部分<BR>&#39;整数部分<BR>For j = 1 To i - 1<BR>k = k + Val(Mid(a, j, 1)) * (2 ^ (i - 1 - j))<BR>Next j<BR>&#39;小数部分<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>
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|测量空间论坛 ( 闽ICP备19019609号-1 )

GMT+8, 2026-7-5 00:13 , Processed in 0.065792 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表