早教吧作业答案频道 -->其他-->
VBA把无限循环小数化为分数首先要判断这个数是不是无限循环小数.
题目详情
VBA把无限循环小数化为分数
首先要判断这个数是不是无限循环小数.
首先要判断这个数是不是无限循环小数.
▼优质解答
答案和解析
以下代码在excel中运行,可以对纯循环小数化分数,例如0.236236236这种纯循环小数
Sub test()
Dim Num As Double
Dim i%, Lnj%, Sec#, ZeroN%, NSec$, Cy$, ChPass As Boolean
Num = 0.123123123123
Num = Abs(Num)
Sec = Num - Int(Num)
Do
i = i + 1
Loop Until Sec * 10 ^ i > 1
ZeroN = i - 1
NSec = Sec * 10 ^ ZeroN
NSec = Right(NSec, Len(NSec) - 1)
ChPass = True
Do
Lnj = Lnj + 1
Cy = Left(NSec, Lnj)
For i = 1 To 2
If Not Cy = Mid(NSec, Lnj * i + 1, Lnj) Then
ChPass = False
Exit For
End If
Next i
If ChPass Then
Exit Do
End If
Loop Until 3 * Lnj > Len(NSec)
Dim Cona#, b#, a$
b = Cy
For i = 1 To Len(Cy)
a = a & "9"
Next i
Cona = a * 10 ^ ZeroN
Dim SaveI&
'====约分化简====
For i = 2 To b
If b Mod i = 0 And Cona Mod i = 0 Then
SaveI = i
End If
Next i
If SaveI > 1 Then
b = b / SaveI
Cona = Cona / SaveI
End If
'
MsgBox b & "/" & Cona
End Sub
Sub test()
Dim Num As Double
Dim i%, Lnj%, Sec#, ZeroN%, NSec$, Cy$, ChPass As Boolean
Num = 0.123123123123
Num = Abs(Num)
Sec = Num - Int(Num)
Do
i = i + 1
Loop Until Sec * 10 ^ i > 1
ZeroN = i - 1
NSec = Sec * 10 ^ ZeroN
NSec = Right(NSec, Len(NSec) - 1)
ChPass = True
Do
Lnj = Lnj + 1
Cy = Left(NSec, Lnj)
For i = 1 To 2
If Not Cy = Mid(NSec, Lnj * i + 1, Lnj) Then
ChPass = False
Exit For
End If
Next i
If ChPass Then
Exit Do
End If
Loop Until 3 * Lnj > Len(NSec)
Dim Cona#, b#, a$
b = Cy
For i = 1 To Len(Cy)
a = a & "9"
Next i
Cona = a * 10 ^ ZeroN
Dim SaveI&
'====约分化简====
For i = 2 To b
If b Mod i = 0 And Cona Mod i = 0 Then
SaveI = i
End If
Next i
If SaveI > 1 Then
b = b / SaveI
Cona = Cona / SaveI
End If
'
MsgBox b & "/" & Cona
End Sub
看了VBA把无限循环小数化为分数首...的网友还看了以下:
求极限,X→0,(1-x^2)^(-1/2),是不是可以化简成一个多项式?如题,原题是x->0,( 2020-04-27 …
lingo不等式限制条件不起作用model:sets:center/1..3/:u;addr/1. 2020-05-13 …
Δv=vt-v0,Δv越大,表示的变化量越大,即速度改变得越快,对吗?为什么?学生甲:对.因为Δv 2020-05-16 …
Δv=vt-v0,Δv越大,表示的变化量越大,即速度改变得越快,对吗?为什么?学生甲:对.因为Δv 2020-05-16 …
只要a与v的方向相同,不论a是变大还是变小或不变,v一定增大吗只要a与v的方向相反,不论a是变大还 2020-05-16 …
如何将循环小数化成分数我们知道,任何一个分数都能化成小数,不是有限小数,就是无限循环小数.那么,反 2020-06-27 …
一质点做匀加速直线运动时,速度变化△v时发生位移x1,紧接着速度变化同样的△v时发生位移x2,则该 2020-08-03 …
V正>V逆平衡正向移动?很过书说过~V正>V逆~平衡正向移动~A(g)=2B(g)这个反应在密闭容器 2020-12-15 …
高中物理万有引力近心离心?一卫星绕月运动,轨道半径r,运行速度v,当探测器飞越质量密集区上空时,rv 2020-12-23 …
由加速度的定义式a=△v△t可知()A.加速度a与速度的变化△v成正比B.加速度a与时间△t成反比C 2021-01-29 …