Data::Quantity::Finance::Currency
Currency-appropriate formatting for numbers
Synopsis
use Data::Quantity::Finance::Currency;
print Data::Quantity::Finance::Currency->type('USD')->readable_value( $pennies );
$pennies = Data::Quantity::Finance::Currency->type('USD')->numeric_value( <STDIN> );
Description
This module provides functions to convert between different representations of currency values. It does not (yet) actually handle any foreign currencies, conversions or multiple-currency environments, but I imagine it might, some day.
Integer values are used for internal representation of currency values to avoid floating-point vagaries. For US Dollars, this means that values are stored as an integer number of pennies.
- readable_value
-
Converts an integer value to a readable string.
For US Dollars, this includes
1 =
$0.01> and148290 =
$1,482.90>. - numeric_value
-
Convert an externally-generated candidate value into an integer.
For US Dollars, this includes
1 =
$0.01> and148290 =
$1,482.90>.
There are two internal representations:
- storable
-
An integer value containing the major and minor currency numbers.
148290
- split
-
A list of the major and minor currency numbers; in the context of US currency, these would be the dollar and cent amounts.
( 1482, 90 )
Reference
Package Configuration
- $CurrencySymbol
-
The local currency symbol. Defaults to '$'.
- $DecimalPlaces
-
The number of decimal places supported by the selected currency. Defaults to 2.
- $DecimalSep
-
The decimal separator for the selected currency. Defaults to '.'.
- $DisplayDecimals
-
A flag to indicate if decimals are shown in display string. Defaults to 1.
Conversions
- display_store( $integer_value ) : $display_str
-
Converts a value in the integral storage format to a formatted display string.
- update_store( $integer_value ) : $decimal_number
-
Converts a value in the integral storage format to an editable decimal number.
- store_update( $decimal_number ) : $integer_value
-
Converts a value in the editable decimal number format to a storable integer.
- display_update( $decimal_number ) : $display_str
-
Converts a value in the editable decimal number format to a formatted display string.
Split Input
These functions take a value in the storage or update format and convert it to a list of major and minor currency numbers.
- split_update( $decimal_number ) : ($major, $minor)
-
Accepts a dollar value (formatted or not) and returns a list of dollars and cents.
- split_store( $integer_value ) : ($major, $minor)
- conventionalize($major, $minor) : ($major, $minor)
-
Provides appropriate zero-padding for the major and minor currency numbers.
Split Output
- store_split($major, $minor) : $integer_value
- update_split($major, $minor) : $decimal_number
- display_split($major, $minor) : $display_str
Compatibility
- pretty_dollars( $decimal_number ) : $display_str
-
Now invokes display_update.
Returns a value with a dollar sign, comma separated groups and appropriate decimal values.
- cents_to_dollars( $integer_value ) : $display_str
-
Now invokes display_store.
Works as pretty_dollars above, but converts argument from an integer number of pennies.
- dollars_to_cents( $decimal_number ) : $integer_value
-
Now invokes store_update.
Accepts a dollar value and returns an integer ammount of pennies.
- pennies( $integer_value ) : $decimal_number
-
Now invokes update_store.
Caveats and Upcoming Changes
This module is still somewhat disorganized; the interface is likely to change in future versions.
This is Free Software
Copyright 1997, 1998 Evolution Online Systems, Inc.
You can use this software under the same terms as Perl itself.