Function fenshu(ByVal xiaoshu As Single, Optional ByVal jingdu As Integer = 3) As String '小数转换为分数,误差小于0.1^jingdu
Dim i As Long
Do
i = i + 1
Loop Until Abs((i / xiaoshu) - Round((i / xiaoshu), 0)) < 0.1 ^ jingdu
fenshu = i & "/" & Round(i / xiaoshu)
End Function
Function xiaoshu(ByVal fenshu As String) As String '将N/D形式(其中N为分子,D为分母)的分数转换为小数,如果为无限循环小数则用括号将循环节括起来
Dim N As Long, D As Long
N = CLng(Split(fenshu, "/")(0))
D = CLng(Split(fenshu, "/")(1))
If N Mod D = 0 Then '整除
xiaoshu = N / D
Exit Function
Else
Dim digit() As String, flag() As Long, temp As Double, temp2 As Long, i As Long, K As Integer
ReDim digit(1 To D + Len(CStr(D))) '定义最长不重复位数
ReDim flag(D) '0-D 每位数字出现于小数点后的位置
xiaoshu = Int(N / D) & "."
temp = N Mod D '取余
i = 2
Do While i <= D + Len(CStr(D)) '循环所有可能
If temp = 0 Then '除尽了
ReDim Preserve digit(1 To i) '前i位
xiaoshu = xiaoshu & Join(digit, "")
Exit Function
End If
If flag(temp) > 1 Then '重复出现
digit(flag(temp)) = "(" & digit(flag(temp)) 'flag(temp)指该数字第一次出现的位置,添加左括号
ReDim Preserve digit(1 To i - 1)
xiaoshu = xiaoshu & Join(digit, "") & ")" '添加右括号
Exit Function
Else
flag(temp) = i '赋值
End If
'以下三行模拟除法运算,实现高精度除法
temp = temp * 10
digit(i) = Int(temp / D) Mod 10
temp = temp - Int(temp / D) * D
i = i + 1
Loop
End If
End Function
Private Sub Command1_Click()
Dim i As Integer, x() As String
ReDim x(1 To 6) '小数到分数
For i = 1 To 6
x(i) = fenshu(3.14159265358979, i) & "(误差小于1/" & 10 ^ (i - 1) & " )"
Next
MsgBox Join(x, vbCrLf), vbInformation, "圆周率"
ReDim x(1 To 17) '分数到小数
For i = 1 To 17
x(i) = Right(" " & i, 2) & "/17=" & xiaoshu(i & "/17")
Next
MsgBox Join(x, vbCrLf), vbInformation, "17的循环节"
End Sub
分享到:
相关推荐
VB 小数部分的进制转换 VB 小数部分的进制转换
vb实现阅读输入英文vb实现阅读输入英文vb实现阅读输入英文vb实现阅读输入英文vb实现阅读输入英文vb实现阅读输入英文vb实现阅读输入英文vb实现阅读输入英文vb实现阅读输入英文vb实现阅读输入英文vb实现阅读输入英文vb...
Vb 生成小数位的随机数示例程序 Vb生成带小数位的随机数示例程序,每点一次生成一组随机数
VB实现汉字简体、繁体互相转换 VB简体 繁体 互相转换 API实现 可以实现一整个字符串一次性转换,字符串中可包含非汉字字符。
VB实现自动按键,VB实现自动按键,VB实现自动按键
VB实现将BMP格式图片转化为ICO图标
VB6.0实现屏幕和音频都录入 合成avi音影视听的 源码实例 (纯VB实现)
分数计算器(没做小书,凑合着用吧。)囧囧囧囧囧囧
VB 字符和ASCII码间的相互转换 VB 字符和ASCII码间的相互转换
vb实现ip地址的转换和分离,直接运行即可
VB实现DES加密解密算法已测试通过如有更新另行发布
微粒子群算法的vb实现,具有动态可视效果
利用VB内部机制实现图像格式转换
VB实现XP界面VB实现XP界面VB实现XP界面VB实现XP界面
进制转换,有VB源码,共两个函数,可以转换小数。
VB DA转换 MCGS
VB实现温度的转换,华氏转换为摄氏,摄氏也可以转换成华氏,在华氏温度文本框中输入度数,点击一下华氏转化成摄氏按钮,在摄氏温度文本框中就能现实转换好的温度,同理也能转换成华氏
VB AD转换 MCGS
VB 实现进制转换,不错的代码,基本支持所有进制。支持 16,10,2,8进制直接的转换。
【工控老马出品,必属精品,亲测校正,质量...资源名:VB实现网站用户登录和注册功能程序源码 资源类型:程序源代码 源码说明:包含 登录、注册、更改密码 功能,很适合学习借鉴 适合人群:新手及有一定经验的开发人员