2011-04-07 12 views
7

Java'da ondalık, yüzer, çift vb. Biçimlendirmenin basit bir yolu var mıdır? YALNIZCA sayının ondalık bölümünü yazdırmak için? Tamsayı kısmına ihtiyacım yok, hatta/özellikle sıfır ise! Şu anda, ondalığın sağ tarafındaki sayının bölümünü kaldırmak için String.substring() yöntemiyle birleştirilmiş String.indexOf (".") Yöntemini kullanıyorum. Bunu yapmanın daha temiz bir yolu var mı? DecimalFormat sınıfında veya printf yönteminde hiçbir şey bulunamadı. Her ikisi de her zaman ondalık basamaktan önce bir sıfır döndürür.Java - Sadece ondalık basımı basacak şekilde biçimlendirme sayısı

+0

Eğer ondalık noktayı göstermek istiyorsunuz yazdırır ? –

+0

Evet, ondalık noktasını göstermek istiyorum – Fred

cevap

7

Değerin tamsayı kısmını, çift uzunluğa dönüştürerek kaldırabilirsiniz.

double val = 3.5; 
long intPartVal= (long) val; 
double fracPartVal = val - intPartVal; 
System.out.println(fracPartVal); 

Ve lider sıfır kurtulmak istiyorsanız bunu yapabilirsiniz:

System.out.println(("" + fracPartVal).substring(1)); 
+0

Hala baştaki sıfır basacak inanıyorum. Baskıya ihtiyacım var: 0,5, 0,5 değil. – Fred

+0

+1 bu benim için yeni. başka bir örnek [http://www.java2s.com/Code/Java/Language-Basics/Obtainingtheintegerandfractionalparts.htm]. – mre

+2

, baştaki sıfırı kaldırmak için yol ekledi, ancak zaten yaptığınız şeyin az ya da çok olduğuna inanıyorum. Sayıların tamsayı kısmını çıkarmak için çıkartmak yine de daha çekici bir çözüm olmalı diye düşünüyorum. – jberg

5

Divide tarafından Ardından sadece fraksiyonel değerle bırakılmalı orijinal değerden bu çıkarabilirsiniz 1 ve ondalık kısmı ("%" kullanarak) almak için geri kalanını al. (Bir 0 bastırmak için sembolü "#" kullanarak) formatında sonucuna DecimalFormat kullanın:

double d1 = 67.22; 
double d2 = d1%1; 
DecimalFormat df = new DecimalFormat("#.00"); 
System.out.println(df.format(d2)); 

bu .22

+0

Evet, bunu yaptı. – Fred

0

yazdırır Bu 0,3

double x = 23.8; 
int y =(int)x; 
float z= (float) (x % y); 
System.out.println(z); 
+0

Bu işe yarayacak, ancak gereksiz bir şekilde karmaşık. Sadece geriye kalan modülo 1'in alınması, bütün tamsayı parçasını yapacak veya çıkaracaktır. – poolie