Benda Lukas napsal:

Bohuzel ve chvili kdyz musite pracovat s DB jineho programu ktery ma castky ukladany jako float(8), tak na vyber nemate :((

Ovšemže na výběr máte.
Data jsou možná reprezentována nevhodně, ale Vy si tím nemusíte program zasvinit více, než je nutné.

Při každém čtení z databáze si částky hned převeďte na BigDecimal se scale=2 a dál počítejte s nimi. Při ukládání do této databáze najděte nejbližší reprezentaci výsledku v datovém typu float (dost možná to uspokojivě udělá JDBC driver).

Měl byste nějak prokazatelně informovat zákazníka, že jeho databáze možná nebyla navržena s veškerou péčí, kterou by od informatika bylo možno očekávat. (Říkám možná: pokud aplikační oblastí není "účetnictví", ale "manažerské účetnictví" nebo skoro cokoli jiného, tak je rozumná přesnost na prvních pár - nanejvýš 6 - platných míst, což typ float splní.) Popište, jak tuto situaci ve svém programu řešíte, a upozorněte, že výsledky by v některých případech mohly být jiné než očekávané, což však nebude způsobeno Vaším programem. Pak jste podle mne v situaci, kdy tu databázi nemáte ve své moci, udělal vše, co po Vás lze rozumně žádat.

Honza Dvořák

Odpovedet emailem