The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Devel::Ladybug::Double - Overloaded double-precision number object

DESCRIPTION

Double-precision floating point number, only not really.

This class just avoids E notation when stringifying, and uses DOUBLE(30,10) for its database column type. Otherwise, it is overloaded to work like a native number in numeric and string operations, which means it does not handle high-precision or bignum math operations, such as those supported by Math::BigFloat, without floating point lossiness.

Extends Devel::Ladybug::Float.

SYNOPSIS

  use Devel::Ladybug::Double;

  my $double = Devel::Ladybug::Double->new(.0000001);

  print "$double\n";

  print "$double * 2 = ". ( $double*2 ) ."\n";

DIAGNOSTICS

Devel::Ladybug::Double is overloaded to just work like a native number.

It does so by treating the most and least significant values as string-like, or integer-like, depending on the situation. In short, it's a big hack. Precision is not guaranteed.

Should the unlikely event arise that you need to know what the backing reference value looks like-- it's an ARRAY ref. Position 0 contains the most significant value (left side of decimal), and position 1 contains a zero-padded string of the least significant value (right side of decimal).

SEE ALSO

This file is part of Devel::Ladybug.