$ perl -MConfig -MB=svref_2object,SVf_IVisUV,SVf_NOK -e' $i = eval($Config{nv_overflows_integers_at}) - 3; $sv = svref_2object(\$i); for (1..4) { ++$i; printf $sv->FLAGS & SVf_NOK ? "NV %.0f\n" : $sv->FLAGS & SVf_IVisUV ? "UV %u\n" : "IV %d\n", $i; } ' NV 9007199254740990 NV 9007199254740991 Precision required as a float: NV 9007199254740992 <-- 2**53 1 bit NV 9007199254740992 <-- 2**53 + 1 54 bits, but only 53 are available