uima-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Thilo Götz <twgo...@gmx.de>
Subject Re: BigDecimal as CAS type
Date Wed, 10 Nov 2010 15:00:36 GMT
On 11/10/2010 15:40, Frank Schilder wrote:
> Hi all,
> I'm trying to represent the value of a money amount as BigDecimal. For
> example $3.25 should be annotated with a Money annotation. The Money
> annotation should have a feature called val and the value of this feature
> should be of type BigDecimal instead of float (or double).
> It has been suggested elsewhere that using floating point numbers is not a
> good idea for representing money amounts:
> http://www.ibm.com/developerworks/java/library/j-jtp0114/
> Unfortunately, BigDecimals are not supported as CAS type for the value of an
> annotation feature. Would it be possible to add this type easily or could
> you suggest a work-around?

It is not easy to add this type.

The easiest work-around would be to put a string representation
in the CAS.  Just use the BigDecimal.toString() method to encode,
and the BigDecimal(String) constructor to decode.  I know it's
ugly.  If you hide this conversion behind some accessor methods
for your money annotation, you can later change this implementation
for something better.

A more efficient representation would be to build your own CAS
datatype with an int for the scale and a byte array for the
value.  However, that seems like a lot of work for little benefit.
But then I don't know what your application is.


> Thanks a lot,
> Frank

View raw message