Ich habe es gerade auf float gefunden, und ich denke, dasselbe wird passieren, wenn Sie den Wert auf double überprüfen.
public class Main {
public static void main(String[] args) throws Exception {
System.out.println("Float.parseFloat(999999967) --> " + Float.parseFloat("999999967"));
System.out.println("Float.parseFloat(999999968) --> " + Float.parseFloat("999999968"));
System.out.println("Float.parseFloat(999999969) --> " + Float.parseFloat("999999969"));
System.out.println("Float.parseFloat(999999999) --> " + Float.parseFloat("999999999"));
System.out.println("Float.parseFloat(1000000000) --> " + Float.parseFloat("1000000000"));
System.out.println("Float.parseFloat(1000000001) --> " + Float.parseFloat("1000000001"));
System.out.println("Float.parseFloat(1000000010) --> " + Float.parseFloat("1000000010"));
System.out.println("Float.parseFloat(1000000020) --> " + Float.parseFloat("1000000020"));
System.out.println("Float.parseFloat(1000000030) --> " + Float.parseFloat("1000000030"));
System.out.println("Float.parseFloat(1000000031) --> " + Float.parseFloat("1000000031"));
System.out.println("Float.parseFloat(1000000032) --> " + Float.parseFloat("1000000032"));
System.out.println("Float.parseFloat(1000000033) --> " + Float.parseFloat("1000000033"));
System.out.println("Float.parseFloat(1000000034) --> " + Float.parseFloat("1000000034"));
System.out.println("Float.parseFloat(1000000035) --> " + Float.parseFloat("1000000035"));
System.out.println("Float.parseFloat(1000000040) --> " + Float.parseFloat("1000000040"));
}
}
Float.parseFloat(999999967) --> 9.9999994E8
Float.parseFloat(999999968) --> 1.0E9
Float.parseFloat(999999969) --> 1.0E9
Float.parseFloat(999999999) --> 1.0E9
Float.parseFloat(1000000000) --> 1.0E9
Float.parseFloat(1000000001) --> 1.0E9
Float.parseFloat(1000000010) --> 1.0E9
Float.parseFloat(1000000020) --> 1.0E9
Float.parseFloat(1000000030) --> 1.0E9
Float.parseFloat(1000000031) --> 1.0E9
Float.parseFloat(1000000032) --> 1.0E9
Float.parseFloat(1000000033) --> 1.00000006E9
Float.parseFloat(1000000034) --> 1.00000006E9
Float.parseFloat(1000000035) --> 1.00000006E9
Float.parseFloat(1000000040) --> 1.00000006E9
https://paiza.io/projects/KMTyqbyvAG1M_8KslEVWiQ
Wenn 999.999.999 und 1.000.000.000 in Float umgewandelt werden, haben sie den gleichen Wert. Nicht nur das, 999.999.968 bis 1.000.000.032 werden als der gleiche Wert angesehen.
Es war ein Beispiel, dass Sie vorsichtig sein sollten, wenn Sie eine Prüfung durchführen, z. B. einen Fehler machen möchten, wenn Sie einen Wert eingeben, der größer als 999.999.999 (= 1.000.000.000) ist. In diesem Beispiel gibt es zwei Möglichkeiten: double oder BigDecimal. Wenn möglich, ist BigDecimal vorzuziehen.
Recommended Posts