Sergey Kabashnyuk schrieb:
Unfortunately, I have to index any possible number of
java.math.BigDecimal
Hi Sergey,
quite a lot of numbers are possible for BigDecimal. Somehow the range
must be bounded.
Let's first draw the line where, for a given BigDecimal bd, the result
of bd.toString(), which since 1.5 returns a "standard canonical string
form", cannot be refed to the String constructor for BigDecimal. So when
reconstruction fails, that is out of range for you.
### 9.999E2147483647 still works
9.999E+2147483647 - toString()
99.99E+2147483646 - toEngineeringString()
Rekonstruktion via toString(): works
Rekonstruktion via toEngineeringString(): works
### 10.001E2147483647 too big, does not work
1.0001E+2147483648 - toString()
100.01E+2147483646 - toEngineeringString()
Rekonstruktion via toString(): NumberFormatException
Rekonstruktion via toEngineeringString(): works
Next, unlimited precision is a problem. Do you need a precision of two
billion digits? Probably not. De facto, precision is constrained by
available memory. So you see you must rephrase your requirement in order
to accomodate real-world conditions.
I can rephrase my question this way:
How can I convert java.math.BigDecimal numbers in to string
for its storing in lexicographical order
I assume what you mean is formatting the number so that the
lexicographical order of any possible sequence of acceptable numbers
is the same as its numerical order.
You must find a canonical representation like the scientific notation
and then tweak it as follows:
* "N" for negative and "P" for positive numbers ("N" sorts before "P")
* fixed-width zero-padded exponent first, like "E0000000003", base 10
* one digit with marker, like "N2"
* fixed-width zero-padded decimals with marker, like "D008000000000"
This is 2008, "PE0000000003N2D008000000000". YMMV, of course.
I hope this helps.
Michael Ludwig
---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org