logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Math::Calc::Units - Human-readable unit-aware calculator

Author

       Steve Fink <sfink@cpan.org>

Description

       "Math::Calc::Units" is a simple calculator that keeps track of units. It currently handles combinations
       of byte sizes and duration only, although adding any other multiplicative types is easy. Any unknown type
       is treated as a unique user type (with some effort to map English plurals to their singular forms).

       The primary intended use is via the "ucalc" script that prints out all of the "readable" variants of a
       value. For example, "3 bytes" will only produce "3 byte", but "3 byte / sec" produces the original along
       with "180 byte / minute", "10.55 kilobyte / hour", etc.

       The "Math::Calc::Units" interface only provides for string-based computations, which could result in a
       large loss of precision for some applications. If you need the exact result, you may pass in an extra
       parameter 'exact' to "calc" or "convert", causing them to return a 2-element list containing the
       numerical result and a string describing the units of that result:

           my ($value, $units) = convert("10MB/sec", "GB/day");

       (In scalar context, they just return the numeric value.)

   Examplesofuse
       •   Estimate transmission rates (e.g., 10MB at 384 kilobit/sec)

       •   Estimate performance characteristics (e.g., disk I/O rates)

       •   Figure out how long something will take to complete

       I  tend to work on performance-sensitive code that involves a lot of network and disk traffic, so I wrote
       this tool after I became very sick of constantly converting KB/sec to GB/day when trying  to  figure  out
       how  long  a  run  is going to take, or what the theoretical maximum performance would be if we were 100%
       disk bound. Now I can't live without it.

   Contraindications
       If you are just trying to convert  from  one  unit  to  another,  you'll  probably  be  better  off  with
       "Math::Units" or "Convert::Units". This module really only makes sense when you're converting to and from
       human-readable values.

Name

       Math::Calc::Units - Human-readable unit-aware calculator

See Also

       ucalc, Math::Units, Convert::Units.

perl v5.32.0                                       2021-01-01                                         Units(3pm)

Synopsis

           use Math::Calc::Units qw(calc readable convert equal);

           print "It will take ".calc("10MB/(384Kbps)")." to download\n";

           my @alternative_descriptions = readable("10MB/(384Kbps)");

           print "A week is ".convert("1 week", "seconds")." long\n";

           if (equal("$rate bytes / sec", "1 MB/sec")) { ... };

See Also