Win a copy of Functional Reactive Programming this week in the Other Languages forum!

# Formatting Servlet output (double precision) - Help Required.

Suresh Selvaraj
Ranch Hand
Posts: 104
Hi,
We have a Form that accepts many fields for user to Input.
Here is the problem...
Example: Assume 2 fields qty (for getting quantity from the user) and unitprice ( accepts unit price from the user).
Inside the servlet...
String unitprice = req.getParameter("unitprice");
double unitprc = Double.valueOf(unitprice).doubleValue();
String qty = req.getParameter("qty");
int quantity = Integer.parseInt(qty);
double total=0.00
total = quantity * unitprc;
When this total field is printed, it gives the output with single precision (decimal) like 25.0 etc.
Here is an example: If qty=5 and unitprice=4.0 or 4.00 or 4
the total reflects only 20.0
Actaully, the output is expected to be something like 20.00 (i.e with 2 decimal places)
Any help is appreciated.
Thanks,
Suresh Selvaraj

Bosun Bello
Ranch Hand
Posts: 1511
Check out the DecimalFormat class in java.text. package.
Bosun

Mohamed Yousuff
Ranch Hand
Posts: 73

I think it is due to multiplication of int and double.
Try as
total = (double) quantity * unitprc
Originally posted by Suresh Selvaraj:
Hi,
We have a Form that accepts many fields for user to Input.
Here is the problem...
Example: Assume 2 fields qty (for getting quantity from the user) and unitprice ( accepts unit price from the user).
Inside the servlet...
String unitprice = req.getParameter("unitprice");
double unitprc = Double.valueOf(unitprice).doubleValue();
String qty = req.getParameter("qty");
int quantity = Integer.parseInt(qty);
double total=0.00
total = quantity * unitprc;
When this total field is printed, it gives the output with single precision (decimal) like 25.0 etc.
Here is an example: If qty=5 and unitprice=4.0 or 4.00 or 4
the total reflects only 20.0
Actaully, the output is expected to be something like 20.00 (i.e with 2 decimal places)
Any help is appreciated.
Thanks,
Suresh Selvaraj

------------------

Julio Lopez
Greenhorn
Posts: 28
Looks like I am the java.math.BigDecimal advocate of the day. Try this,
try {
java.math.BigDecimal unitPriceBigDecimal = new java.math.BigDecimal(req.getParameter("unitprice"));
java.math.BigDecimal quantityBigDecimal = new java.math.BigDecimal(req.getParameter("qty"));
java.math.BigDecimal totalBigDecimal = unitPriceBigDecimal.multiply(quantityBigDecimal);
totalBigDecimal = totalBigDecimal.setScale(2, java.math.BigDecimal.ROUND_HALF_UP);
}
catch (NumberFormatException e) {
}
catch (Exception e) {
}
Julio Lopez
M-Group Systems

Suresh Selvaraj
Ranch Hand
Posts: 104
Hi All,
Thanks very much for your reply. I tried using java.text.DecimalFormat class and I was able to get the required output.
Thanks very much.
Suresh Selvaraj