早教吧 育儿知识 作业答案 考试题库 百科 知识分享

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
看了VBA把无限循环小数化为分数首...的网友还看了以下:

下列选项,哪一个是正确的A.有理数与无理数的和定是无理数B.无理数与无理数的和定是无理数C.无理数与  2020-03-31 …

下列说法中正确的是()A.无理数是无限不循环小数B.无限小数都是无理数C.-1的平方根是±1D.-  2020-04-11 …

下列说法中,正确的是()A.无理数包括正无理数、0和负无理数B.无理数是用根号形式表示的数C.无理  2020-05-02 …

下列说法正确的是A无理数的和一定是无理数B无理数的积一定是无理数C有理数乘无理数一定是无理数D有理  2020-06-03 …

高数,无穷小与无穷大下列说法正确的是?A无穷小量是很小很小的数B无穷大量是很大很大的数C某一极限过  2020-06-14 …

下列说法中正确的是()A.带根号的数是无理数B.无理数不能在数轴上表示出来C.无理数是无限小数D.  2020-06-27 …

下列说法正确的是A.无限小数是无理数B.无限不循环小数是无理数C.无理数的相反数是有理数D.两个无  2020-06-27 …

下列说法中,正确的是()A.无理数包括正无理数、零和负无理数B.无限小数都是无理数C.正实数包括正  2020-06-27 …

求哥哥姐姐,叔叔婶婶们帮做几道8年级的数学题,1.下列说法正确的是A.有理数只是有限小数B.无理数  2020-07-16 …

函数y=x+sinx是()A有界奇函数B无界偶函数C非奇非偶函数D无界奇函数怎样判断函数有界无界?  2020-07-31 …