Precyzja utracona w wartości float za pomocą Java
Podany poniżej kodu testowego i jego wyjścia. Gdy otrzymuję wartość zmiennoprzecinkową z wartości liczbowej, precyzja jest tracona. Czy ktoś może mi powiedzieć, dlaczego to zachowanie i jak sobie z tym poradzić?
public static void main(String[] args)
{
try
{
java.lang.Number numberVal = 676543.21;
float floatVal = numberVal.floatValue();
System.out.println("Number value : " + numberVal);
System.out.println("float value : " + floatVal);
System.out.println("Float.MAX_VALUE : " + Float.MAX_VALUE);
System.out.println("Is floatVal > Float.MAX_VALUE ? " + ( floatVal > Float.MAX_VALUE));
}catch(Exception e)
{
e.printStackTrace();
}
}
wydajność:
Number value : 676543.21
float value : 676543.2
Float.MAX_VALUE : 3.4028235E38
Is floatVal > Float.MAX_VALUE ? false
także dlaczego wartość zmiennoprzecinkowa jest mniejsza niż Float.MAX_VALUE?