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

Suresh Selvaraj

Ranch Hand

Posts: 104

posted 14 years ago

- 0

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

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

Suresh Selvaraj, (author of JQuiz)<br />SCJP2<br /><a href="http://www.decontconsulting.com" target="_blank" rel="nofollow">www.decontconsulting.com</a>

Bosun Bello

Ranch Hand

Posts: 1510

posted 14 years ago

- 0

Check out the DecimalFormat class in java.text. package.

Bosun

Bosun

Bosun (SCJP, SCWCD)

So much trouble in the world -- Bob Marley

Mohamed Yousuff

Ranch Hand

Posts: 73

posted 14 years ago

I think it is due to multiplication of int and double.

Try as

total = (double) quantity * unitprc

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

- 0

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

posted 14 years ago

- 0

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

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

posted 14 years ago
Suresh Selvaraj, (author of JQuiz)<br />SCJP2<br /><a href="http://www.decontconsulting.com" target="_blank" rel="nofollow">www.decontconsulting.com</a>

- 0

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

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

Did you see how Paul cut 87% off of his electric heat bill with 82 watts of micro heaters? |