第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我無法以 Java 中的長數(shù)據(jù)類型打印 Math 類的結(jié)果?

我無法以 Java 中的長數(shù)據(jù)類型打印 Math 類的結(jié)果?

開心每一天1111 2023-09-27 16:54:49
我正在嘗試創(chuàng)建一個 n 從 16 到 2048 的表以及 log(n)、n*log(n)...首先,我用 double 對結(jié)果進(jìn)行了 printf 編輯,結(jié)果很好,除了表格沒有對齊,而是在 n = 256 處搞亂了。我認(rèn)為結(jié)果對于 double 數(shù)據(jù)來說可能太大了類型所以我切換到長。public class FunctionGrowth {    public static void main(String[] args) {        long n = 16L;        System.out.println("log(n) \tn \t\tn*log(n)\t\tn^2 \tn^3 \t\t2^n");        while(n <= 2048) {            long l = (long) Math.log(n);            long nl = (long) (n*Math.log(n));            long pow = (long) Math.pow(n,2);            long cube = (long) Math.pow(n,3);            long pow2 =(long) Math.pow(2,n);            System.out.printf("%.2d\t%.0d\t\t%.2d\t\t\t%d\t%d\t\t%d\n", l, n, nl, pow, cube, pow2);            n = n*2;        }    }}但現(xiàn)在我有一個新問題: Exception in thread "main" java.util.IllegalFormatPrecisionException: 2我嘗試了很多方法將 log(n), pow(n,2)... 從 Math 類轉(zhuǎn)換為 long,但到目前為止沒有任何效果。你能幫我解決這個問題嗎?我很掙扎。
查看完整描述

4 回答

?
繁花不似錦

TA貢獻(xiàn)1851條經(jīng)驗 獲得超4個贊

您遇到的行為是由于指定整數(shù)類型的精度而導(dǎo)致的,該精度無效。

此行為在類 Javadoc 中指定Formatter

精確

對于一般參數(shù)類型,精度是要寫入輸出的最大字符數(shù)。

對于浮點轉(zhuǎn)換“a”、“A”、“e”、“E”和“f”,精度是小數(shù)點后的位數(shù)。如果轉(zhuǎn)換為“g”或“G”,則精度是四舍五入后結(jié)果大小的總位數(shù)。

對于字符、整數(shù)和日期/時間參數(shù)類型以及百分比和行分隔符轉(zhuǎn)換,精度不適用;如果提供了精度,則會拋出異常。


查看完整回答
反對 回復(fù) 2023-09-27
?
暮色呼如

TA貢獻(xiàn)1853條經(jīng)驗 獲得超9個贊

不建議這樣做,但您可以采用這樣的方法。


public static void main(String[] args) {


    long n = 16L;


    // Do use format number accordingly

    int format = 20;


    System.out.printf(

        "%" + format + "s\t" +

            "%" + format + "s\t" +

            "%" + format + "s\t" +

            "%" + format + "s\t"+

            "%" + format + "s\t" +

            "%" + format + "s\n", "log(n)", "(n)", "nlog(n)", "n^2", "n^3", "2^n");


    //System.out.println("log(n) \tn \t\tn*log(n)\t\tn^2 \tn^3 \t\t2^n");


    while (n <= 2048) {

        long l = (long) Math.log(n);

        long nl = (long) (n * Math.log(n));

        long pow = (long) Math.pow(n, 2);

        long cube = (long) Math.pow(n, 3);

        long pow2 = (long) Math.pow(2, n);


        System.out.printf(

            "%" + format + "d\t" +

            "%" + format + "d\t" +

            "%" + format + "d\t" +

            "%" + format + "d\t"+

            "%" + format + "d\t" +

            "%" + format + "d\n", l, n, nl, pow, cube, pow2);

        n = n * 2;

    }

}

https://img1.sycdn.imooc.com//6513ee250001779119540315.jpg

查看完整回答
反對 回復(fù) 2023-09-27
?
慕桂英4014372

TA貢獻(xiàn)1871條經(jīng)驗 獲得超13個贊

您收到的錯誤是因為您將 long 值格式化為 int 值,而 int 不支持精度格式化。嘗試將長值轉(zhuǎn)換為浮點數(shù),并將格式說明符(%.2d 和類似的)更改為浮點說明符(%.2f 和類似的)。



查看完整回答
反對 回復(fù) 2023-09-27
?
呼喚遠(yuǎn)方

TA貢獻(xiàn)1856條經(jīng)驗 獲得超11個贊

您可以使用 DecimalFormat:


public static void main(String[] args) {

    long n = 16L;

    System.out.println("log(n) \tn \t\tn*log(n)\t\tn^2 \tn^3 \t\t2^n");


    while(n <= 2048) {

        long l = (long) Math.log(n);

        long nl = (long) (n*Math.log(n));

        long pow = (long) Math.pow(n,2);

        long cube = (long) Math.pow(n,3);

        long pow2 =(long) Math.pow(2,n);


        DecimalFormat df = new DecimalFormat("0.00");

        String format = df.format(l) + "\t" +  df.format((nl)) + "\t" + df.format(pow) + "\t" + df.format(cube) + "\t" + df.format(pow2);

        System.out.println(format);

        n = n*2;

    }

}

您可以在此處了解有關(guān) DecimalFormat 的更多信息:


https://docs.oracle.com/javase/8/docs/api/java/text/DecimalFormat.html


查看完整回答
反對 回復(fù) 2023-09-27
  • 4 回答
  • 0 關(guān)注
  • 211 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號