这是vb的世界,这是程序源代码的海洋,我借此与众多朋友共同交流编程思想,编程技巧,望我能够在帮助大家的同时,得到大家的恩惠。魔灵圣域欢迎大家的到来。

高精度除法

2008-05-18 00:24:24 / 天气: 阴雨 / 心情: 高兴 / 精华(3) / 置顶(3) / 个人分类:VB 类别

Option Explicit
Z#L Nc+N(L0Dim x As Integer, y As Integer, z As IntegerVBGood社区门户O+P~4Q'q'\RT3Q
Private Sub Command1_Click()VBGood社区门户7R]mi9r
    On Error GoTo err100VBGood社区门户eZ ]Q]/J![ A"Y
    Dim x As Long, y As Long, z As Long, m As Long, n As IntegerVBGood社区门户 TCAB5PF5Bi-z
    x = Val(Text1.Text): y = Val(Text2.Text): z = Val(Text3.Text)VBGood社区门户I4v5iG1{
    Debug.Print CStr(x) & "÷"; CStr(y) & "=";
tT!@EC[y0    If x Mod y = 0 Then Debug.Print x / y;: Exit Sub
*mV%MEhl9o Z0    Debug.Print CStr(x \ y) & ".";
owb%FC t6qw%k0    m = x Mod y
_x8JM9M@ i0    n = 1
d{@/{bph+GM!^*Qv0    Do While n < zVBGood社区门户RS;WN7X [ J
       m = m * 10
-e%Z8rC!k.ha'X0       Debug.Print CStr(m \ y);VBGood社区门户o@a.S W
       m = m Mod y
5p` HH d#o7a)[0       n = n + 1VBGood社区门户:[6}2ms qW0F
    Loop
)F&od!E?"KY6r0N3M5a0    'm四舍五入保留n位小数
K r/ydz jw j3HvJ6Y6c0    Debug.Print CStr(Int(m * 10 ^ n + 0.5) / 10 ^ n)
W,H G i^w0    Exit SubVBGood社区门户3[+W+{ l ym)x
err100:
,\p.@t4z_0    MsgBox "除数不能为零"
p P4S!nt8K8_@0End Sub

TAG: VB

Igawk发布于2008-12-21 12:01:12
最后一位只要写成:VBGood社区门户l%{$T
^h b VC\\2t

Debug.Print Int(m * 10 / y + 0.5)En8{
X ew

即可
/y5m8n'gkY,kQ5u9z
F)s,RbP;MoVBGood社区门户[ 本帖最后由 Igawk 于 2008-12-21 12:10 编辑 ]
yangyxd的个人空间 yangyxd 发布于2008-10-12 21:08:37
VB要做高精度可以用字符串来处理,模拟数学的笔算方法来运算(我以前做过一个),就可以达到无限高精度。。。。。。。
1DWh*_H3Mp%TGi
5FQ?fW        Nc
z5B
但是这个速度。。。。。。。 哎, 。。。8H}|$b(Z6]j4f

m.~o D7yg不知道谁有好的方法。
toVB发布于2008-05-24 10:57:12
最后一位数的四舍五入处理不对,可改为8\_!O4v0k        Lt-a
debug.Print Int((((m * 10) Mod y) * 10 \ y) / 10 + 0.5) + m * 10 \ y
N5a8[ \[;]P \c Ftblog.vbgood.comV7~ Fa%P3{
[ 本帖最后由 toVB 于 2008-5-24 11:04 编辑 ]
Snap3.jpg

Snap3.jpg

虚空之刃 仙剑魔 发布于2008-05-20 20:00:28
要实现高精度/高精度,必须先实现高精度+(-)高精度和高精度*高精度V4q'j?6oL`
不是一般的麻烦...
魔灵圣域之VB世界 icecept 发布于2008-05-20 11:59:12
被除数和除数还不会做
自动化之光——未来城 VBProFan 发布于2008-05-18 13:38:30
这个只是商的高精度,被除数和除数都是低精度的。
我来说两句

(可选)

Open Toolbar