Hi!

I would like some input on how the Math::BigInt module and bigint pragma
should handle non-integers. The current behaviour is rather inconsistent.

The new() constructor converts a non-integer to a Math::BigInt NaN:

    $ perl -MMath::BigInt -wle 'print Math::BigInt -> new("3.16")'
    NaN

A math operation that returns a non-integer, returns a Math::BigInt with the
truncated value:

    $ perl -MMath::BigInt -wle 'print Math::BigInt -> new("10") -> bsqrt()'
    3

Math::BigInt with overloading of constants, leave a non-integer as an
unmodified Perl scalar:

    $ perl -MMath::BigInt=:constant -wle 'print 3.16'
    3.16

However, when the "bigint" pragma is used for overloading constants, a
non-integer becomes a Math::BigInt with the truncated value:

    $ perl -Mbigint -wle 'print 3.16'
    3

I'm not saying that all four cases should return the same value, but
returning three different values seems too much. Any suggestions?

Cheers,
Peter

Reply via email to