On Wednesday 05 December 2007 23:50:08 Martin Preuss wrote:
> Moin,
>
> On Mittwoch, 5. Dezember 2007, Thomas Baumgart wrote:
> [...]
>
> > Einen String der Form "nom/denom" kann ich schon direkt im Konstruktor
> > von MyMoneyMoney verarbeiten. Denn so speichern wir ja die Werte in der
> > Datei. Sollte allerdings in die 64 Bit reinpassen ;)
>
> [...]
>
> Ok, ich habe das nun so geaendert, dass jeweil int64_t zurueckgegeben wird.
> Ausserdem gibt es nun die Funktion AB_Value_GetNumDenomString(), welche den
> String in der Form "num/denom" in einen uebergebenen Puffer schreibt.

Das sieht ja extrem 'ugly' aus - der Umweg über snprintf :(

Probleme gibt es noch mit negativen und irgendwie extrem großen Zahlen :(

6:2007/12/06 07-49-13:(null)(26600):mymoneybanking.cpp:  527: Adding 
transaction
  Value: -157/4 (-39.25 EUR)
num = -2843 (fffffffffffff4e5)
denom = 4 (4)
MyMoneyMoney(-2843/4)
MyMoneyMoney(-710,7500)


6:2007/12/06 07-49-13:(null)(26600):mymoneybanking.cpp:  527: Adding 
transaction
  Value: 
58184456566852616694523094906498756766597/42535295865117307932921825928971026432
 
(1367.91 EUR)
num = 5902958103587056517 (51eb851eb851eb85)
denom = 504684641933067010 (701000206040302)
MyMoneyMoney(5902958103587056517/504684641933067010)
MyMoneyMoney(0,0000)

Das zugehörige Code Snippet im kmm_plugin sieht folgendermassen aus:

    AB_Value_Dump(val, stderr, 2);

    int64_t num = AB_Value_GetNumerator(val);
    int64_t denom = AB_Value_GetDenominator(val);
    fprintf(stderr, "num = %ld (%lx)\n", num, num);
    fprintf(stderr, "denom = %ld (%lx)\n", denom, denom);

    kt.m_amount=MyMoneyMoney(num, denom);

    fprintf(stderr, "MyMoneyMoney(%s)\n", kt.m_amount.toString().data());
    fprintf(stderr, "MyMoneyMoney(%s)\n",
      kt.m_amount.formatMoney("",4).data());


Ich habe gute Erfahrung gemacht, diese Brücke mit den großen Zählern und 
Nennern auf einen gemeinsamen Nenner zu reduzieren (z.B. 100 oder wenn man's 
genauer braucht 100000)

-- 

Regards

Thomas Baumgart

GPG-FP: E55E D592 F45F 116B 8429   4F99 9C59 DB40 B75D D3BA
-------------------------------------------------------------
The shortest words, namely yes and no,
require the most thoughts. -- Pythagoras of Samos
-------------------------------------------------------------

Attachment: signature.asc
Description: This is a digitally signed message part.

-------------------------------------------------------------------------
SF.Net email is sponsored by: The Future of Linux Business White Paper
from Novell.  From the desktop to the data center, Linux is going
mainstream.  Let it simplify your IT future.
http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4
_______________________________________________
Aqbanking-devel mailing list
Aqbanking-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/aqbanking-devel

Reply via email to