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 Aqbanking-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/aqbanking-devel