|
Apr 15
|
The BigDecimal class makes this really easy as it has a method toByteArray() that returns exactly what we need. Just need to create a BigDecimal and call the method.
byte[] bytes = new BigInteger(hexString, 16).toByteArray();
|
|
The BigDecimal class makes this really easy as it has a method toByteArray() that returns exactly what we need. Just need to create a BigDecimal and call the method. byte[] bytes = new BigInteger(hexString, 16).toByteArray();
Standard rounding provided by BigDecimal and DecimalFormat rounds to the nearest 0 or 1. If you instead want to round to 0, 1 or 0.5 then you need to do a little work For example to round up to 4 decimal places to the nearest 0, 1, or .5 you could use the following code. BigDecimal bd = new BigDecimal((d * 2.0) + 0.0005) .setScale(3, BigDecimal.ROUND_HALF_UP); bd = new BigDecimal(bd.doubleValue()/2.0) .setScale(4, BigDecimal.ROUND_HALF_UP); String rounded = bd.toString();
Decimal format uses BigDecimal.ROUND_HALF_EVEN and prior to 1.6 this cannot be changed. DecimalFormat df = NumberFormat.getNumberInstance(); df.setRoundingMode(1, RoundingMode.HALF_UP); String formatted = df.format(12.345); If you need an alternate rounding strategy prior to 1.6 then you need to use BigDecimal to do your formatting. double d = 123.45; BigDecimal bd = new BigDecimal(d); bd.setScale(1, BigDecimal.ROUND_HALF_UP); String formatted = bd.toString(); |
|
Recent Comments