Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 浮点精度visual basic_Vb.net_Vba_Excel_Floating Point - Fatal编程技术网

Vb.net 浮点精度visual basic

Vb.net 浮点精度visual basic,vb.net,vba,excel,floating-point,Vb.net,Vba,Excel,Floating Point,我想知道在计算pi时如何在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 enn

我想知道在计算pi时如何在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)

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

使用Decimal子变量类型可以获得更高的精度

这需要一点时间来运行

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:

VBA无法处理比double更精确的数字,如果您想要更多,您必须处理字符串。xNumbers加载项可以实现这一功能,您可以在此处找到更新的xlam版本:

查看.Net的BigInteger库。你必须稍微调整一下你的算法。它使用一些方法来执行减法和除法等运算。

比多少位数还要多?双人间有一个房间。如果你需要更多,数字类型不会减少它,你需要专门的库。不完全正确。请看我的答案。变量的decimal数据子类型将带来比double更高的精度,但除此之外,确实需要字符串。