Most of the work has already gone into constructing the BigDecimal anyway. I'm not sure it's worth caching an Int just for (I assume) ordering. If you think it's slow, perhaps the parser instead give us an Int in the range 0-1000 instead of a String that we convert into a BigDecimal?