2013-02-28 3 views
-1

Я пытаюсь отформатировать номер с DecimalFormat. Но я хочу, чтобы отформатировать число, то есть какФормирование числа/строки с десятичным разделителем

input: 1234. --> should be formatted to: 1,234. 

Но я получаю 1,234.0 или 1,234.00 В зависимости от правил для десятичного формата Что я должен сделать, чтобы получить это сделано?

+0

Каковы ваши правила, которые приводят к неправильному выходу? –

+1

Можете ли вы показать пример кода того, как вы используете 'DecimalFormat'? – Krease

ответ

5

Методы которые должны помочь вам: setMinimumFractionDigits и setMaximumFractionDigits.

format.setMinimumFractionDigits(0); 

Угадайте, возможно, что вы ищете.


Для того, чтобы десятичный разделитель всегда выводится, использование: DecimalFormat.setDecimalSeparatorAlwaysShown(true)

+0

Я не могу получить выход с разделителем. Как и вход: 1. и вывод: 1. только 1 или 1.0 – user2118495

+0

Не поймал это как требование в первый раз. Обновлен ответ, чтобы справиться с этим. – femtoRgon

1

Если вы не хотите отображать любые знаков после запятой, не форматирует значение с плавающей запятой :) Если вы используете BigInteger, int или long, это должно быть прекрасно:

import java.math.*; 
import java.text.*; 

public class Test { 

    private static final char p = 'p'; 

    public static void main(String[] args) { 
     NumberFormat format = new DecimalFormat(); 
     BigInteger value = BigInteger.valueOf(1234); 
     System.out.println(format.format(value)); 
     System.out.println(format.format(1234)); 
     System.out.println(format.format(1234L)); 
    } 
} 
+0

Дело в том, что я хочу отобразить точку. Это похоже на Input, и вы добавляете отдельные значения. Итак, я хочу, чтобы точка была показана. – user2118495

+0

@ user2118495: Это очень * необычно, чтобы показать десятичный разделитель без десятичных цифр после него. Я не помню, чтобы когда-либо видел это в пользовательском интерфейсе или написании человеком. Я не удивлюсь, увидев, что это не поддерживается. –

+0

Если я нажимаю точку на нескольких калькуляторах, я получаю разделитель без какого-либо числа за ним. Я так хочу. Как обычный ввод калькулятора. – user2118495

2

Вы можете форматировать число, независимо от того, является ли это десятичное или нет с помощью

DecimalFormat f = new DecimalFormat("#,###"); 
f.format(whatever)... 
0

Попробуйте это:

DecimalFormat df = new DecimalFormat("#,###.", DecimalFormatSymbols.getInstance(Locale.ENGLISH)); 
System.out.println(df.format(1234));