2015-10-20 75 views
2

我想知道如何在计算pi时获得更多数字的visual basic。这是我的代码:float precision visual basic

Dim enne, phi As Double 
    phi = 1 
    Console.WriteLine("Insert numble of cycles") 
    enne = Console.ReadLine 
    For i = 0 To enne 
     phi = 6 + ((2 * enne + 1) * (2 * enne + 1))/phi 
     enne = enne - 1 
    Next 
    phi = phi - 3 

    Console.WriteLine("pi is") 
    Console.WriteLine(phi) 
    Console.WriteLine("normal pi is ") 
    Console.WriteLine(Math.PI) 
+0

更多数字比多少? Double具有[15位精度](https://msdn.microsoft.com/en-us/library/s3f49ktz.aspx)。如果你需要更多,数字类型不会削减它,你需要专门的库。 – GolezTrol

回答

1

当我写这个答案时,问题被标记为VBA。

使用十进制子变量类型可以获得更高的精度。

这需要一点时间来运行...

Sub Pi() 

    Dim enne As Variant, phi As Variant 
    phi = CDec(1) 

    enne = 100000000 

    For i = 0 To enne 
     phi = 6 + ((2 * enne + 1) * (2 * enne + 1))/phi 
     enne = enne - 1 
    Next 
    phi = phi - 3 

    Debug.Print " 3.14159265358979323846264338327950288419716" 
    Debug.Print phi 

End Sub 

实际PI在这里:http://www.piday.org/million/

0

VBA不能超过一倍更好的精度处理的数字,如果你想要更多,你必须用字符串解决问题。该xNumbers插件可以做到这招,你可以找到一个更新版本xlam这里:http://www.thetropicalevents.com/Xnumbers60.htm

+0

并非完全如此。请看我的答案。该变体的小数数据子类型会比double更精确,但除此之外,确实需要字符串。 –