簡體   English   中英

Java:顯示浮點數,精度為30

[英]Java: Display float with precision of 30

我正在嘗試使用某些算法來計算PI,但是主要的事情是以30的精度顯示它。我試圖以format等輸出字符串。但是似乎double最大精度是15。是否有任何類或有什么方法可以幫助我嗎?

我已經嘗試過:

public class Challenge6PI {

    public static void main(String[] args){

        System.out.format( "%.30f",
                Math.log(Math.pow(640320, 3) + 744) / Math.sqrt(163));
    }
}

盡管JDK具有BigDecimal ,但是不幸的是您沒有.sqrt()

這意味着最好的選擇是使用apfloat

final Apfloat f1 = new Apfloat(640320);
final Apfloat f2 = ApfloatMath.pow(f1, 3L);
final Apfloat f3 = f2.add(new Apfloat(744));
final Apfloat f4 = ApfloatMath.sqrt(new Apfloat(163), 1000L);
final Apfloat ret = ApfloatMath.log(f3.divide(f4));

System.out.println(ApfloatMath.round(ret, 30L, RoundingMode.HALF_DOWN));

不過,您使用pi的方法更短;)

System.out.println(ApfloatMath.pi(30L));

我猜Float不支持那么多的精度。 您可以為此使用BigDecimal。

雙精度沒有那么高的精度。 看一下double類型是如何實現的 對於任意精度,請看BigDecimal

例如:

BigDecimal bd = new BigDecimal(22.0/7.0);
df.setMaximumFractionDigits(30);
System.out.println(df.format(bd));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM