VB编程这题怎么写?
由于计算机内部表达方式的限制,浮点运算都有精度问题,为了得到高精度的计算结果,就需要自己设计实现方法。如16/19的结果0.8421052631...
可以模仿人工列竖式做除法的方式,先将被除数乘以10,得到一位商以后,将余数乘以10作为下一轮计算的被除数:
160/19->8余8
80/19->4余4
...
当某次余数为0时,则表明除尽。
请写一个程序,输入一个分数,计算出它的小数形式。无论是否可以除尽,输出最多小数点后200位。
输入格式:
在如下图如示的文本框中输入两个数,并存储在a和b两个变量中,其中10<=a<b<100。也就是说,这个小数一定是小于1的正数。
输出格式:
单击显示命令按钮后,在窗体中显示 0.xxxxxxxxx的小数,每行显示20个数字,如果a/b是一个有限不循环小数,则输出完所有的有效位就可以了,不需要再输出后面的0来凑满200位。 展开
vb2010写的程序运行两百次速度还可以,如果要运行再多的次数可以开个多线程去运算就不会卡了
运行前
运行后
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim 计数器 = 0
TextBox4.Text = "0."
Do While 计数器 < TextBox3.Text
TextBox1.Text = TextBox1.Text * 10
TextBox4.Text = TextBox4.Text & TextBox1.Text \ TextBox2.Text
TextBox1.Text = TextBox1.Text Mod TextBox2.Text
If (计数器 + 3) Mod 20 = 0 Then TextBox4.Text &= vbCrLf
计数器 += 1
If TextBox1.Text = 0 Then Exit Do
Loop
Label1.Text = "运算结束,共运算了" & 计数器 & "次"
End Sub
Private Sub Command1_Click()
Dim a As Integer, b As Integer
Dim c As Integer
a = 16
b = 19
Dim i As Integer
Print "0.";
For i = 1 To 200
a = a * 10
c = a \ b
a = a Mod b
Print CStr(c);
If i Mod 20 = 0 Then Print: Print " ";
If a = 0 Then Exit For
Next
End Sub