> I solved my issue
you're very optimistic.
I delved into Devel::Peek and I'm still not sure which type casting or crossed thresholds produced different results for 2 and 3.
Anyway you're voyaging dangerous grounds, don't be surprised if your Float to Int conversions breaks again.
Better rely on on already shown pure integer arithmetic for your integer (sic) tests. (rule of thumb!)
PS:
lanx@nc10-ubuntu:~$ perl -MDevel::Peek -e'$|=1;$e=2;$x=log(5**$e)/log(
+5); Dump $x; print ("\n", ($x==$e) ? "" : "not " ,"equal\n\n"); Dump
+ $x;'
SV = NV(0x9c86840) at 0x9c70f68
REFCNT = 1
FLAGS = (NOK,pNOK)
NV = 2
equal
SV = PVNV(0x9c50a60) at 0x9c70f68
REFCNT = 1
FLAGS = (IOK,NOK,pIOK,pNOK)
IV = 2
NV = 2
PV = 0
lanx@nc10-ubuntu:~$ perl -MDevel::Peek -e'$|=1;$e=3;$x=log(5**$e)/log(
+5); Dump $x; print ("\n", ($x==$e) ? "" : "not " ,"equal\n\n"); Dump
+ $x;'
SV = NV(0x8fde840) at 0x8fc8f68
REFCNT = 1
FLAGS = (NOK,pNOK)
NV = 3
not equal
SV = PVNV(0x8fa8a60) at 0x8fc8f68
REFCNT = 1
FLAGS = (NOK,pIOK,pNOK)
IV = 3
NV = 3
PV = 0
UPDATE: improved code |