perlancar >
Number-Closest-NonOO >
Number::Closest::NonOO

Module Version: 0.06
Number::Closest::NonOO - Find number(s) closest to a number in a list of numbers

This document describes version 0.06 of Number::Closest::NonOO (from Perl distribution Number-Closest-NonOO), released on 2015-09-03.

use Number::Closest::NonOO qw(find_closest_number find_farthest_number); my $nums = find_closest_number(number=>3, numbers=>[1, 3, 5, 10], items => 2); # => [3, 1] $nums = find_farthest_number(number=>3, numbers=>[1, 3, 5, 10]); # => 10

Find number(s) closest to a number in a list of numbers.

Arguments ('*' denotes required arguments):

**inf**=>*str*(default: "nothing")Specify how to handle Inf.

`exclude`

means the items will first be excluded from the list.`nothing`

will do nothing about it and will produce a warning if target number is an infinite,`number`

will treat Inf like a very large number, i.e. Inf is closest to Inf and largest positive numbers, -Inf is closest to -Inf and after that largest negative numbers.I'd reckon that

`number`

is the behavior that most people want when dealing with infinites. But since it's slower, it's not the default and you have to specify it specifically. You should choose`number`

if target number is infinite.**items**=>*int*(default: 1)Return this number of closest numbers.

**nan**=>*str*(default: "exclude")Specify how to handle NaN and non-numbers.

`exclude`

means the items will first be excluded from the list.`nothing`

will do nothing about it, meaning there will be warnings when comparing non-numbers.**number*** =>*num*The target number.

**numbers*** =>*array*The list of numbers.

Return value: (any)

Find number(s) farthest to a number in a list of numbers.

Arguments ('*' denotes required arguments):

**inf**=>*str*(default: "nothing")Specify how to handle Inf.

`exclude`

means the items will first be excluded from the list.`nothing`

will do nothing about it and will produce a warning if target number is an infinite,`number`

will treat Inf like a very large number, i.e. Inf is closest to Inf and largest positive numbers, -Inf is closest to -Inf and after that largest negative numbers.I'd reckon that

`number`

is the behavior that most people want when dealing with infinites. But since it's slower, it's not the default and you have to specify it specifically. You should choose`number`

if target number is infinite.**items**=>*int*(default: 1)Return this number of closest numbers.

**nan**=>*str*(default: "exclude")Specify how to handle NaN and non-numbers.

`exclude`

means the items will first be excluded from the list.`nothing`

will do nothing about it, meaning there will be warnings when comparing non-numbers.**number*** =>*num*The target number.

**numbers*** =>*array*The list of numbers.

Return value: (any)

You can filter (grep) your list of numbers first, for example to find numbers that are closest *and smaller or equal to* 3:

my @nums = grep {$_ <= 3} 1, 3, 5, 2, 4; my $res = find_closest_number(number => 3, numbers => \@nums);

Perform uniq() (see List::MoreUtils) on the resulting numbers.

Number::Closest. Number::Closest::NonOO is a non-OO version of Number::Closest, with some additional features: customize handling NaN/Inf, find farthest number.

Please visit the project's homepage at https://metacpan.org/release/Number-Closest-NonOO.

Source repository is at https://github.com/perlancar/perl-Number-Closest-NonOO.

Please report any bugs or feature requests on the bugtracker website https://rt.cpan.org/Public/Dist/Display.html?Name=Number-Closest-NonOO

When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.

perlancar <perlancar@cpan.org>

This software is copyright (c) 2015 by perlancar@cpan.org.

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

syntax highlighting: