Tudo bem pessoal.
Estou com um problema de precisão com o float e double procurei bastante em alguns forum, mas n achei nada relacionado.
Sempre que acho alguma coisa é usando:
- System.out.format(format, args);
- NumberFormat
- BigDecimal
e priciso passar um float para o metodo.
Executando o codigo abaixo:
public class TestFloat {
public static void main(String[] args) {
for (float i = 0; i < 2.0f; i+=0.1) {
System.out.println(i);
}
}
}
Resultado é:
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.70000005
0.8000001
0.9000001
1.0000001
1.1000001
1.2000002
1.3000002
1.4000002
1.5000002
1.6000003
1.7000003
1.8000003
1.9000003
mas eu so posso passar pro metodo um float um numero depois “.” , ou seja, 0.1, 0.2 … 0.9 não pode ser 0.123, 0.36. Teria alguma maneira de fazer isso sem usar “System.out.format(format, args), NumberFormat, BigDecimal e try/catch para converter String em float”.
Outra pergunta por que isso acontece com a soma de i no loop for acima se eu somo o resultado de:
float i = 0.6, y 0.1;
i += y é igual 0.70000005
i += y é igual 0.8000001
qual o problema com a precisao do float?