2015-01-26 68 views
1
int ptstotal, ptsearned, ptssofar; 
ptstotal= 1500; 
ptsearned= 750; 
ptssofar= 950; 

System.out.println("The current percentage is "+(int)Math.round(ptsearned*1)/(double)(ptssofar)*100+"%."); 

System.out.println("The current percentage is "+Math.round(ptsearned*1)/(double)ptssofar*100+"%."); 

輸出是一個長的十進制78.96736805263%和只需要78.97%需要一些幫助我如何能得到這個執行到小數點後兩位,出來只要小數

+0

使用DecimalFormat類。這個問題之前已經被問過很多次了。 https://stackoverflow.com/questions/17060285/java-double-how-to-always-show-two-decimal-digits – jn1kk 2015-01-26 19:27:24

回答

1

嘗試用printf代替

double value = (int)Math.round(ptsearned*1)/(double)(ptssofar)*100; 
System.out.printf("The current percentage is %.2f %",value); 
+0

謝謝!這也是成功的! – squash69 2015-01-26 19:37:04

0

你可以使用一個DecimalFormatformatted outputprintf(String, Object...)

DecimalFormat df = new DecimalFormat("###.00"); 
System.out.println("The current percentage is " 
     + df.format(Math.round(ptsearned * 1)/(double) (ptssofar) 
       * 100) + "%."); 
System.out.printf("The current percentage is %.2f%%.%n", 
     Math.round(ptsearned * 1)/(double) ptssofar * 100); 

其輸出(請求)

The current percentage is 78.95%. 
The current percentage is 78.95%. 
+0

非常感謝你!這工作完美! – squash69 2015-01-26 19:36:00

+2

我認爲一個更好的格式化字符串應該是'#.00'。你總是會得到兩個小數點。 – jn1kk 2015-01-26 19:39:51

0

沒有一點乘以1的數字,或您知道是整數的數量調用Math.round。把事情簡單化。

double percentage = (double)ptsearned/ptssofar * 100; 
System.out.format("The current percentage is %.2f%%%n", percentage); 

在這裏,您需要(double)以避免整數除法。然後,在格式字符串中,%.2f表示顯示具有兩位小數的該值。下一個%%轉換爲百分比符號,最後一個%n轉換爲行分隔符。

+0

謝謝。這有幫助。我對Java相當陌生,所以在試圖使其運行時我就是這麼做的。不知道有很多方法可以使其發揮作用。 – squash69 2015-01-26 20:36:23

相關問題