2013-06-18 2 views
0

У меня есть значение Float как 0.152545 Я просто хочу 0.1f.
Как это возможно ..
С помощью String я получил значение String. Следующий код показывает результат.Как получить 3 charater в поплавке?

String pass = pass.substring(0, Math.min(pass.length(), 3)); 
pass=pass+"f"; 

Это дает мне значение String like0.1f, но я хочу только значение Float, например 0.1f.

+1

Почему вы не преобразовать его в поплавок и установить точность вы хотите? – Maroun

+1

Просто замечание об использовании: одна десятая, 0,1, не имеет точного представления в битах, а поплавок - просто приближение (сумма с использованием 1/32, 1/64, 1/128, ...). Таким образом, 1000 * 0,1 не будет 100,0. –

ответ

-1

Как насчет

float new = Math.round(10.0 * f)/10.0; 

Это не будет точно, как поплавки/двойники лишь суммы конечных серии 1/2^n, но может быть достаточно для вас.

Возможно, вам стоит подумать о presenting the float с помощью одной значащей десятичной точки и сохранить полную точность внутри страны?

Cheers,

0

Вы можете использовать BigDecimal.

float f = 0.152545f; 
BigDecimal bd = new BigDecimal(f); 
bd = bd.setScale(1, RoundingMode.DOWN); 
f = bd.floatValue(); 

Прекрасно работает, даже если у вас есть поплавок, хранящийся в виде строки.

String floatAsString = "0.152545"; 
BigDecimal bd = new BigDecimal(floatAsString); 
bd = bd.setScale(1, RoundingMode.DOWN); 
float f = bd.floatValue(); 
0

Вы можете сделать:

DecimalFormat format = new DecimalFormat("0.0"); 
format.setRoundingMode(RoundingMode.DOWN); 
format.setMaximumFractionDigits(1); 
System.out.println(format.format(0.152545) + "f");