Je viens de le trouver sur float, et je pense que la même chose se produira si vous vérifiez la valeur sur double.
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
Si 999 999 999 et 1 000 000 000 sont convertis en flottant, ils auront la même valeur. Non seulement cela, 999 999 968 à 1 000 000 032 sont considérés comme la même valeur.
C'est un exemple que vous devez être prudent lorsque vous effectuez une vérification, par exemple si vous voulez faire une erreur si vous entrez une valeur supérieure à 999 999 999 (= 1 000 000 000). Dans cet exemple, il existe deux choix, double ou BigDecimal, et il est préférable d'utiliser BigDecimal si possible.
Recommended Posts