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
-------------------------------------------------------------
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 [email protected] https://lists.sourceforge.net/lists/listinfo/aqbanking-devel
