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

Data::Object::Number - A Number Object for Perl 5

VERSION

version 0.33

SYNOPSIS

    use Data::Object::Number;

    my $number = Data::Object::Number->new(1_000_000);

DESCRIPTION

Data::Object::Number provides common methods for operating on Perl 5 numeric data. Number methods work on data that meets the criteria for being a number. A number holds and manipulates an arbitrary sequence of bytes, typically representing numberic characters (0-9). Users of numbers should be aware of the methods that modify the number itself as opposed to returning a new number. Unless stated, it may be safe to assume that the following methods copy, modify and return new numbers based on their function.

COMPOSITION

This class inherits all functionality from the Data::Object::Role::Number role and implements proxy methods as documented herewith.

METHODS

abs

    # given 12

    $number->abs; # 12

    # given -12

    $number->abs; # 12

The abs method returns the absolute value of the number. This method returns a Data::Object::Number object.

atan2

    # given 1

    $number->atan2(1); # 0.785398163397448

The atan2 method returns the arctangent of Y/X in the range -PI to PI This method returns a Data::Object::Float object.

cos

    # given 12

    $number->cos; # 0.843853958732492

The cos method computes the cosine of the number (expressed in radians). This method returns a Data::Object::Float object.

decr

    # given 123456789

    $number->decr; # 123456788

The decr method returns the numeric number decremented by 1. This method returns a data type object to be determined after execution.

downto

    # given 10

    $number->downto(5); # [10,9,8,7,6,5]

The downto method returns an array reference containing integer decreasing values down to and including the limit. This method returns a Data::Object::Array object.

eq

    # given 12345

    $number->eq(12346); # 0

The eq method performs a numeric equality operation. This method returns a Data::Object::Number object representing a boolean.

exp

    # given 0

    $number->exp; # 1

    # given 1

    $number->exp; # 2.71828182845905

    # given 1.5

    $number->exp; # 4.48168907033806

The exp method returns e (the natural logarithm base) to the power of the number. This method returns a Data::Object::Float object.

gt

    # given 99

    $number->gt(50); # 1

The gt method performs a numeric greater-than comparison. This method returns a Data::Object::Number object representing a boolean.

gte

    # given 100

    $number->gte(100); # 1

The gte method performs a numeric greater-than-or-equal-to comparison. This method returns a Data::Object::Number object representing a boolean.

hex

    # given 175

    $number->hex; # 0xaf

The hex method returns a hex string representing the value of the number. This method returns a Data::Object::String object.

incr

    # given 123456789

    $number->incr; # 123456790

The incr method returns the numeric number incremented by 1. This method returns a data type object to be determined after execution.

int

    # given 12.5

    $number->int; # 12

The int method returns the integer portion of the number. Do not use this method for rounding. This method returns a Data::Object::Number object.

log

    # given 12345

    $number->log; # 9.42100640177928

The log method returns the natural logarithm (base e) of the number. This method returns a Data::Object::Float object.

lt

    # given 86

    $number->lt(88); # 1

The lt method performs a numeric less-than comparison. This method returns a Data::Object::Number object representing a boolean.

lte

    # given 50

    $number->lte(50); # 1

The lte method performs a numeric less-than-or-equal-to comparison. This method returns a Data::Object::Number object representing a boolean.

mod

    # given 12

    $number->mod(1); # 0
    $number->mod(2); # 0
    $number->mod(3); # 0
    $number->mod(4); # 0
    $number->mod(5); # 2

The mod method returns the division remainder of the number divided by the argment. This method returns a Data::Object::Number object.

ne

    # given -100

    $number->ne(100); # 1

The ne method performs a numeric equality operation. This method returns a Data::Object::Number object representing a boolean.

neg

    # given 12345

    $number->neg; # -12345

The neg method returns a negative version of the number. This method returns a Data::Object::Integer object.

pow

    # given 12345

    $number->pow(3); # 1881365963625

The pow method returns a number, the result of a math operation, which is the number to the power of the argument. This method returns a Data::Object::Number object.

sin

    # given 12345

    $number->sin; # -0.993771636455681

The sin method returns the sine of the number (expressed in radians). This method returns a data type object to be determined after execution.

sqrt

    # given 12345

    $number->sqrt; # 111.108055513541

The sqrt method returns the positive square root of the number. This method returns a data type object to be determined after execution.

to

    # given 5

    $number->to(9); # [5,6,7,8,9]
    $number->to(1); # [5,4,3,2,1]

The to method returns an array reference containing integer increasing or decreasing values to and including the limit in ascending or descending order based on the value of the floating-point object. This method returns a Data::Object::Array object.

upto

    # given 23

    $number->upto(25); # [23,24,25]

The upto method returns an array reference containing integer increasing values up to and including the limit. This method returns a Data::Object::Array object.

OPERATORS

This class overloads the following operators for your convenience.

bool

    !!$number

    # equivilent to

    $number->data

string

    "$number"

    # equivilent to

    $number->data

smartmatch

    $value ~~ $number

    # equivilent to

    $number->data

SEE ALSO

AUTHOR

Al Newkirk <anewkirk@ana.io>

COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Al Newkirk.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.