vb2010计算圆周率

DimpiAsSingleDimi,xAsIntegeri=1x=1Dox=x+1i=i+2pi=1+1/(i+2)*-1^xLoopWhileMath.Abs(1/(i... Dim pi As Single
Dim i, x As Integer
i = 1
x = 1
Do
x = x + 1
i = i + 2
pi = 1 + 1 / (i + 2) * -1 ^ x

Loop While Math.Abs(1 / (i + 2) * -1 ^ x) < 0.00000001
Label1.Text = pi * 4
为什么输出是3.2???
展开
 我来答
VB编程解放双手
2018-04-13 · 个人VB爱好者专注vb编程_时效软件
VB编程解放双手
采纳数:1204 获赞数:2391

向TA提问 私信TA
展开全部

你的程序有多处严重错误:

Private Sub Command1_Click()

Dim pi As Single

Dim i, x As Single '这里你的定义Integer,1/65535, 比你的0.00000001还要大,所以如果你要计算到你的值,应当把i,x定义为 Single

Print 1 / 65535 > 0.00000001

'  pi=4/1-4/3+4/5-4/7+....

'  4分之一 pi=1/1-1/3+1/5-1/7+....

pi = 1

i = 1

x = 1

Print 1 / 3 * -1 ^ 2

Print 1 / 3 * (-1) ^ 2

Do

'pi应该在循环中累加,你没有加是不对的

pi = pi + 1 / (i + 2) * (-1) ^ x  '这里根据运算符优先级的关系,因为次方运算符大于负数符号,如果不对-1加括号,在偶次方的时候,还是负的

i = i + 2

x = x + 1

Loop While Math.Abs(1 / (i + 2) * (-1) ^ x) > 1 / 2001 '这里除了符号的关系,最关键的是你对do loop while的条件设置反了!

'这里同时,如果设置为0.00000001,计算机将计算很长时间,所以为了缩短时间,设置为1 / 2001

Label1.Caption = pi * 4 '这里vb6没有Label1.text属性,你如果用2010可以自己修改下

End Sub

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式