# currency_type

The Currency type is a large numeric type, with exactly four digit after the decimal point. Internally, Currency using integer calculation to minimizes rounding errors.

The Currency type is appropriate for financial calculations that require large numbers of significant integral, up to four fractional digits, and minimize error caused by floating point calculation.

## Why Using Currency ?

Using Double
``````func main() {
var a = 0.7;
var b = 0.49;
var c = aa * aa;

print('Result : \$c');

if (c == b) {
print("Yes it's equal");
} else {
print("No it's not equal");
}
}
``````
``````Result : 0.48999999999999994
No it's not equal
``````

Using Currency
``````func main() {
var a = Currency.parse('0.7');
var b = Currency.parse('0.49');
var c = a * a;

print('Result : \$c');

if (c == b) {
print("Yes it's equal");
} else {
print("No it's not equal");
}
}
``````
``````Result : 0.4900
Yes it's equal
``````

## How To Use

To use `currency_type` module, you have to add to your project by run following command:

``````\$ dart pub add currency_type
``````

or add directly in `pubspec.yaml`

``````dependencies:
currency_type: ^0.0.2
``````

and then import to your dart file

``````import 'package:currency_type/currency_type.dart';
``````

## Instantiate

You can instantiate Currency with 3 ways:

1. Create zero value

``````var a = Currency();
``````
2. Import from `num` varible or `num` literal :

``````var b = 1234;
var c = 1234.56;

var d = Currency.from(b);
var e = Currency.from(c);

var f = Currency.from(1234);
var g = Currency.from(1234.56);
``````
3. Parsing from string :

``````var f = Currency.parse('1234567890');
var g = Currency.parse('1234567890123456.1234');
``````

`Currency` can store very large number beyond `double`, and the only way to instantiate is by parsing from string.

## Operation

You can do arithmetic operation on `Currency` like addition, subtraction, multiplication, or division
``````var h = d + e;
var i = g - h;
var j = d * e;
var k = g / f;

var l = (d + e) * g;
``````

`Currency` can also be compared to other `Currency`

``````if (k == l) {
...
}

if (h > Currency.from(100)) {
...
}
``````

Library contains `Currency` type for Dart / Flutter