O valor exato de float 0.7f
é 0.69999...
então pensei que o resultado 0.7f * 100f
seria algo abaixo 70
, como 69.99999...
Mas o resultado é exato 70
.
A multiplicação de float envolve tal arredondamento?
Em caso afirmativo, esse pós-processamento também é aplicável em ponto fixo?
Encontrei em algumas bibliotecas de ponto fixo, FP(100) * FP(0.7) is 69.99999
.
Ao lançar isso para int, eles truncam impiedosamente e eu recebo 69
. O que é indesejável, pois o FP pode expressar exato 70
.