I believe you are right about the cause.
According to the docs, Math::BigInt doesn't have a full printf method. Nor does bigint have one, even though it can overload the global hex function so it could conceivably overload sprintf as well, but that wouldn't be easy to implement.
What Math::BigInt has is the methods bstr, as_hex, as_oct, as_bin to format an integer as decimal, hexadecimal, octal and binary respectively. For example,
will output 3**100 in hexadecimal, which comes out asuse bignum; say+(3**100)->as_hex;
0x5a4653ca673768565b41f775d6947d55cf3813d1
(If you wanted a full printf function that works on bignums, you could use Math::GMPz, though of course it will only work with Math::GMPz objects, you can't directly pass a Math::BigInt object to it.)
In reply to Re^2: bignum with (s)printf - 64bit OS OK, 32bit incorrect. What to do?
by ambrus
in thread bignum with (s)printf - 64bit OS OK, 32bit incorrect. What to do?
by geep999
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |