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

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

1.在混循环小数0.51212621(21循环)中,移动循环节的第一个圆点,要使产生的循环小数尽可  2020-05-22 …

写出一个最大的分数,它分子是1并且所化成的小数是不循环部分有2个数字,循环节里最少位数是3的混循环  2020-06-08 …

有“有限循环小数”这个说法吗?我在网上看到这样的一题:从小数点后某一位开始有限地重复出现前一个或一  2020-06-27 …

无理数都是无限小数这是对的还是错的,我觉得是错的啊,无理数不是无限不循环小数吗?无限小数不是包括无  2020-06-27 …

在循环小数0.63434743中,移动循环节的第一个圆点,使新产生的循环小数尽可能小,循环小数改也  2020-07-17 …

以下关于循环结构的描述中,正确的是()A.与分支结构不同,循环结构一定会对循环条件进行多次判断B.循  2020-12-05 …

自然环境中的物质处于不断的循环运动中。下图中序号代表碳循环的过程,回答下列小题。小题1:右图中A.①  2020-12-05 …

循环队列的优点是什么?如何判断它的空和满?假设循环队列只设rear和quelen来分别指示队尾元素的  2020-12-24 …

分数5/7可以化成循环小数,这个循环小数的小数部分第2014位上的数字是几?这2014个数字的和是几  2021-01-22 …

分数七分之五可以化成循环小数,这个循环小数的小数部分第2014位上的数字是几?这2014个数字的和是  2021-01-22 …