GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Math::SigFigs(3) User Contributed Perl Documentation Math::SigFigs(3)

Math::SigFigs - do math with correct handling of significant figures

If you only need to use CountSigFigs and FormatSigFigs, use the first form. If you are going to be doing arithmetic, use the second line.

  use Math::SigFigs;
  use Math::SigFigs qw(:all);

The following routines do simple counting/formatting:

  $n=CountSigFigs($num);
  $num=FormatSigFigs($num,$n);

Use the following routines to do arithmetic operations.

  $num=addSF($n1,$n2);
  $num=subSF($n1,$n2);
  $num=multSF($n1,$n2);
  $num=divSF($n1,$n2);

In many scientific applications, it is useful (and in some cases required) to be able to format numbers with a given number of significant figures, or to do math in such a way as to maintain the correct number of significant figures. The rules for significant figures are too complicated to be handled solely using the sprintf function.

These routines allow you to correctly handle significant figures. It can handle real number or exponentials correctly.

It can count the number of significant figures, format a number to a given number of significant figures, and do basic arithmetic.

All routines return nothing if something other than a valid number is passed in for any argument.
CountSigFigs
  $n=CountSigFigs($N);
    

This returns the number of significant figures in a number. It returns "()" if $N is not a number.

  $N      $n
  -----   --
  240     2
  240.    3
  241     3
  0240    2
  0.03    1
  0.030   2
  1.2e2   2
    

The number zero is not as well defined as other numbers. I have seen different answers for this. I have seen answers that say that '0' has 0, 1, or infinite significant figures and for '0.00', I have seen the number of significant figures given as 0, 1, 2, and 3. Everyone agrees on how to count signficant figures for non-zero numbers... but that agreement doesn't hold true for zero. At this time, this module will return:

  $N      $n
  -----   --
  0       1
  0.0     1
  0.00    2
  0.0e2   1
    

I may try to improve the handling of zero at some point.

FormatSigFigs
  $str=FormatSigFigs($N,$n)
    

This returns a string containing $N formatted to $n significant figures. This will work for all cases except something like "2400" formatted to 3 significant figures.

  $N     $n   $str
  ------ --   -------
  2400    1   2000
  2400    2   2400
  2400    3   2400
  2400    4   2400.
  2400    5   2400.0

  141     3   141
  141     2   140

  0.039   1   0.04
  0.039   2   0.039
  0.0300  2   0.030

  9.9     1   10
  9.9     2   9.9
  9.9     3   9.90

  0       2   0.00
    
addSF, subSF, multSF, divSF
These routines add/subtract/multiply/divide two numbers while maintaining the proper number of significant figures.

Working with zero is a special case. If 0 has 1 signficiant figure (i.e. '0') it is treated as exact. If it has more significant figures (i.e. 0.00), that number is used as appropriate.

Without scientific notation, some numbers are ambiguous
These routines do not work with scientific notation (exponents). As a result, it is impossible to unambiguously format some numbers. For example,

  $str = FormatSigFigs("2400",3);
    

will by necessity return the string "2400" which does NOT have 3 significant figures. This is not a bug. It is simply a fundamental problem with working with significant figures when not using scientific notation.

The number zero is ambiguous
There is not a universally accepted way to specify the number of significant figures that the number 0 has.
perl cannot preserve significant figures in numbers
If you run:

   CountSigFigs(20.00);
     => 1
   CountSigFigs("20.00");
     => 4
    

This is simply due to the way that numbers are stored. When using this module, use numbers stored as strings in order to avoid unexpected results.

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

Sullivan Beck (sbeck@cpan.org)
2018-03-01 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.