2013-11-16 2 views
0

Я хочу быть уверенным, что число имеет только два десятичных знака.Десятичное форматирование не работает

E.G Площадь введена = 256.12345, поэтому Area будет 256.12.

Это то, что у меня есть:

DecimalFormat df = new DecimalFormat("#,###,###,##0.00"); 
double area = new Double(area.format(area)).doubleValue(); 
area = (double)(r*r); 
+0

где вы используете 'df'? – Mureinik

ответ

0

Вы на самом деле не используя экземпляр df.

Изменить код, чтобы использовать его вместо методов, призывающих area (который не будет работать, так как примитивы не имеют методы):

double area = new Double(df.format(area)).doubleValue(); 

Однако формальность точности больше для целей печати чем в целях хранения (Double сохранит его в стандарте IEEE с плавающей запятой для удвоений, что может привести к неточным значениям с плавающей запятой).

Чтобы обойти это, используйте BigDecimal вместо этого, с точностью до 2:

BigDecimal decimal = new BigDecimal(area); 
decimal.setScale(2); 
System.out.println(decimal); // will print area to two decimal places 
0

Это, как вы делаете это.

//formatting numbers upto 2 decimal places in Java 
     DecimalFormat df = new DecimalFormat("#,###,##0.00"); 
     System.out.println(df.format(364565.14)); 
     System.out.println(df.format(364565.1454)); 

     //formatting numbers upto 3 decimal places in Java 
     df = new DecimalFormat("#,###,##0.000"); 
     System.out.println(df.format(364565.14)); 
     System.out.println(df.format(364565.1454)); 
    } 

} 

Output: 
364,565.14 
364,565.15 
364,565.140 
364,565.145 
Смежные вопросы