| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4502 人关注过本帖, 2 人收藏
标题:VB高精度除法
只看楼主 加入收藏
柴胡颗比克
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2020-4-25
收藏
得分:0 
回复 10楼 ZHRXJR
嗯嗯!也谢谢你啦!
2020-04-25 23:17
柴胡颗比克
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2020-4-25
收藏
得分:0 
回复 9楼 wmf2014
那我去试试!谢谢你!
2020-04-25 23:18
柴胡颗比克
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2020-4-25
收藏
得分:0 
回复 9楼 wmf2014
谢谢你!!!还有我想问一下,如果需要将小数点后面的小数部分进行格式化,如,一行输出10个或20个值,并且一个字符一个空格,是需要用计数器实现嘛。
2020-04-25 23:46
柴胡颗比克
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2020-4-25
收藏
得分:0 
明天就结贴。
2020-04-25 23:47
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
回复 13楼 柴胡颗比克
感觉你问的不是vb问题,应该是c或python控制台下的问题,要用print输出?有点编程基础的,按你要求的格式输出不是问题,下面代码对昨天代码优化了,计算速度有很大提升(溢出危险大,除数不大于10000就没问题)。
程序代码:
Function div_high_sigle(a As Long, b As Long) As String
  Dim i As Long, j As Long, k As Long, c As String
  k = Int(a / b)
  j = a Mod b
  c = k & "."
  For i = 0 To 49
    j = j * 10000
    c = c & Format(Int(j / b), "0000")
    j = j Mod b
  Next
  div_high_sigle = c
End Function

Private Sub Command1_Click()
  Text1 = ""
  Text1 = div_high_sigle(1, 49)
End Sub


[此贴子已经被作者于2020-4-26 12:17编辑过]


能编个毛线衣吗?
2020-04-26 12:15
柴胡颗比克
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2020-4-25
收藏
得分:0 
回复 15楼 wmf2014
这个题目原本是c语言的练习题,我们老师让我们用VB写出来。😂谢谢啦!
2020-04-26 16:07
柴胡颗比克
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2020-4-25
收藏
得分:0 
我不是计算机专业的,不过VB是必修课,所以编程基础,emm.😂
2020-04-26 16:08
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
回复 13楼 柴胡颗比克
修改了一下代码,小数点后5个字符隔一个空格,20个字符换一行:
Function div_high_sigle(a As Long, b As Long) As String
  Dim i As Long, j As Long, k As Long, c As String
  k = Int(a / b)
  j = a Mod b
  c = k & "."
  For i = 0 To 49
    j = j * 10000
    c = c & Format(Int(j / b), "0000")
    j = j Mod b
  Next
  div_high_sigle = c
End Function

Private Sub Command1_Click()
Dim a
  Text1 = ""
  a1 = div_high_sigle(1, 49)
  a = Mid(a1, 3) '取小数点后的数字
  a2 = Left(a1, 2)
  Do While Len(a) > 0
  k = k + 1
  b = Mid(a, 1, 1)
  If k Mod 5 = 0 Then
  b1 = b1 & b & " "
  ElseIf k Mod 20 = 0 Then
  b1 = b1 & b & vbCrLf
  Else
  b1 = b1 & b
  End If
  a = Mid(a, 2)
  Loop
  Text1 = a2 & b1
End Sub


[此贴子已经被作者于2020-5-8 22:37编辑过]

2020-05-08 22:23
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
下面是此程序计算的1/997的结果,倒数第34位开始循环了:(把可调用代码中的a,b分别输入1,997即可)
0.00100 30090 27081 24373
 11935 80742 22668 00401
20361 08324 97492 47743
 22968 90672 01604 81444
33299 89969 90972 91875
62688 06419 25777 33199
59879 63891 67502 50752
 25677 03109 32798 39518
55566 70010 03009 02708
12437 31193 58074 22266
如下是程序:(程序还是有问题,换不了行,需要调整,希望老师指点)
Function div_high_sigle(a As Long, b As Long) As String
  Dim i As Long, j As Long, k As Long, c As String
  k = Int(a / b)
  j = a Mod b
  c = k & "."
  For i = 0 To 49
    j = j * 10000
    c = c & Format(Int(j / b), "0000")
    j = j Mod b
  Next
  div_high_sigle = c
End Function

Private Sub Command1_Click()
Dim a
  Text1 = ""
  a1 = div_high_sigle(1, 997)
  a = Mid(a1, 3) '取小数点后的数字
  a2 = Left(a1, 2)
  Do While Len(a) > 0
  k = k + 1
  b = Mid(a, 1, 1)
  If k Mod 5 = 0 Then
  Text1 = Text1 & b & " "
  ElseIf k Mod 20 = 0 Then
  Text1 = Text1 & b & vbCrLf
  Else
  Text1 = Text1 & b
  End If
  a = Mid(a, 2)
  Loop
  Text1 = a2 & Text1
End Sub

2020-05-08 23:55
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
这回对了,先换行再隔离空格,否则换不了行了,程序改定如下:
Function div_high_sigle(a As Long, b As Long) As String
  Dim i As Long, j As Long, k As Long, c As String
  k = Int(a / b)
  j = a Mod b
  c = k & "."
  For i = 0 To 49
    j = j * 10000
    c = c & Format(Int(j / b), "0000")
    j = j Mod b
  Next
  div_high_sigle = c
End Function

Private Sub Command1_Click()
Dim a
  Text1 = ""
  a1 = div_high_sigle(1, 49)
  a = Mid(a1, 3) '取小数点后的数字
  a2 = Left(a1, 2)
  Do While Len(a) > 0
  k = k + 1
  b = Mid(a, 1, 1)
  If k Mod 20 = 0 Then
  b1 = b1 & CStr(b) & vbCrLf
  ElseIf k Mod 5 = 0 Then
  b1 = b1 & CStr(b) & " "
  Else
  b1 = b1 & CStr(b)
  End If
  a = Mid(a, 2)
  Loop
  Text1 = a2 & b1
End Sub
'快速计算1/49能精确到点后200位的程序。
2020-05-09 00:41
快速回复:VB高精度除法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030006 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved