2010-11-15 2 views
2

http://www.exampledepot.com/egs/java.text/FormatNum.htmlNumberFormat проблема

У меня есть номер 1.23, и я хочу отформатировать его до 1,23. Но если у меня всего 1, то я не хочу, чтобы его формат составлял 1,00.

С ##, ## 0.00 i формат от 1,23 до 1,23 и от 1 до 1,00. Как я могу отформатировать от 1,23 до 1,23 и от 1 до 1.

ответ

1

Попробуйте эту модель вместо: ##,###.##

DecimalFormat df = new DecimalFormat("##,###.##"); 
System.out.println(df.format(1.00)); 
System.out.println(df.format(1.23)); 

принты:

1 
1.23 

0 в шаблоне показывает нули, как "0", в то время как # показывает нули, как отсутствуют.

1

Кажется, вы можете решить проблему локально, используйте Frech как ваш местный для десятичного формата. Тогда вы получите ',' вместо '.'

NumberFormat f = NumberFormat.getInstance(local); 
if (f instanceof DecimalFormat) { 
    ((DecimalFormat) f).setDecimalSeparatorAlwaysShown(true); 
} 

или ниже вы можете сделать это

DecimalFormatSymbols symbols = new DecimalFormatSymbols(); 
symbols.setDecimalSeparator(','); 
DecimalFormat format = new DecimalFormat("###.00",symbols); 
System.out.println(format.format(1.22)); 
2
NumberFormat format = NumberFormat.getNumberInstance(); 
format.setMaximumFractionDigits(2); 
format.setMinimumFractionDigits(0); 

System.out.println(format.format(1.23)); 
System.out.println(format.format(1.0)); 
1

Возможно, это поможет.

public class Main { 

    public static void main(String[] args) { 

     double f1 = 1; 
     System.out.printf("f1: %.2f%n", f1); // prints f1: 1.00 

     double f2 = 1.23; 
     System.out.printf("f2: %.2f%n", f2); // prints f2: 1.23 

    } 
} 
1

попробовать это:

DecimalFormatSymbols символы переписано Asela-х и ответы grodriguez в = новые DecimalFormatSymbols(); symbols.setDecimalSeparator (','); Формат DecimalFormat = новый DecimalFormat ("###. ##", символы); System.out.println (format.format (1.00)); System.out.println (format.format (1.23));

выход:

1,23

Ура!

-Saligh

1

Если Locale, настройки стран, имеют десятичную запятую в качестве десятичного разделителя, то это уже обрабатывается Java, как для Шведской местности:

double number = 1.23;  
double otherNumber = 1.00; 

System.out.println(NumberFormat.getInstance(new Locale("sv")).format(number)); 
System.out.println(NumberFormat.getInstance(Locale.ENGLISH).format(number)); 

System.out.println(NumberFormat.getInstance(new Locale("sv")).format(otherNumber)); 
System.out.println(NumberFormat.getInstance(Locale.ENGLISH).format(otherNumber)); 

, который печатает

1,23
1,23

Смежные вопросы