Skip to content

processing decimal numbers with mpdecimal as a backdrop

Notifications You must be signed in to change notification settings

AS400JPLPC/zig_decimal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

zig_Decimal


processing decimal numbers with mpdecimal as a backdrop

***I wrote this lib to free myself from arithmetic problems on large decimals***

[https://speleotrove.com/decimal/](https://speleotrove.com/decimal/)

This part explains why we need it.

Another source that inspired me and that joins what I think 1990

[https://github.com/dnotq/decNumber](https://github.com/dnotq/decNumber)

---

  [https://www.bytereef.org/mpdecimal/index.html](https://www.bytereef.org/mpdecimal/index.html)

Include("mpdecimal.h) view build;

you need to mount the mpdecimal package in your system

installation with your package manager or download

validated: by https://speleotrove.com/decimal/

official site thank you for making this standardization available

---

→ 2023-03-27 test decimal 256 - 70 digit and 512 - 142 digit work bank international

    CTX_ADDR Communication structure for default common control decimal128 -> MPD_ROUND_HALF_EVEN

    openContex() :
    it is possible, to have very very large numbers
    disable c.mpd_ieee_context but you go out of the norm

    DCMLFX  includes 3 values
    number: mpdecimal structure [*c]
    integer: number of integers in front of the point
    scale: number of integers behind the point


    string: if the scale part is larger than its definition,
      it rounds then adds zeros if necessary
      (respects the SQL display alignment standard on the left ex: 1.00)

    rate: raises a value with the percentage ex ( n = (val x nbr) , val = (n x %1.25)

Function Description Pub
openContex Creates icontext internal lib mpdecimal
init Creates Decimal (E,tier , Scal) x
deinit De-allocates the Decimal x
isActif check the area is still active x
isNumber check value is compliant '0-9 + - .'
isValide control number and validity normalize x
isOverflow check if the internal value is out of bounds x
[setDcml give a value (text format) to ".number" x
setZero forces the value 0 to ".number" x
isZeros checks if the value 0 x [
round two-function round and truncate see finance... x
trunc to a function, truncate without rounding x
string format area if the scale part is larger,it rounds x
add a = a + b a.add(b) x
sub a = a - b x
mult a = a * b x
div a = a / b if b = zeros raises an error x
addTo r = a + b r.addto(a,b) x
subTo r = a - b x
multTo r = a * b x
divTo r = a / b if b = zeros raises an error x
floor r = a x
ceil r = a x
rem r = a / b if b = zeros raises an error x
rate total.rate(prix,nbritem,tax) x
cmp compare a , b returns EQ LT GT x
dsperr practical @panic product in test x
[debugContext displlay context value internal mpdecimal x [
debugPrint small followed by ".number" x
x
Dcmliterator Struct Iterator x
next next iterator Char(UTF8) x
preview preview iterator Char(UTF8) x
iterator Returns a StringIterator over the String x
isUTF8Byte Checks if byte is part of UTF-8 character .
getIndex Returns the real index of a unicode .
getUTF8Size Returns the UTF-8 character's size .

sp; ← 2024-12-17 I have completed the checks and memory leak tests, the functions are reviewed and corrected with the consideration.

→ 2024-12-23 03:13
Big is working on memory leaks.
Now I think it's fixed.


→ 2024-12-19 The build in the library as well as in src-zig is compliant and without redundancy.

About

processing decimal numbers with mpdecimal as a backdrop

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published