Solved

how to parse string to double upto two decimal digits

Posted on 2013-05-22
7
513 Views
Last Modified: 2013-07-02
Parse string to double returns me the double value upto one decimal digit.
How to get the double value upto two decimal digits. I want it to be 1.00and not 1.0

String Amt = "1.00";
Double Price = Double.parseDouble(Amt);

Ouput:- 1.0
0
Comment
Question by:Newton21205
7 Comments
 
LVL 86

Assisted Solution

by:CEHJ
CEHJ earned 250 total points
ID: 39189357
Numbers (double/Double in your case) don't have formats, so you have what is known as a 'category error'. Only strings have formats
0
 
LVL 16

Expert Comment

by:krakatoa
ID: 39189360
import java.text.*;
import java.math.*;


class DecFormat {

static DecimalFormat df;
static BigDecimal bd;
static Number num;
static Double d;
static Float dd;

static final double FNUM = 123456.00;




	public static void main(String[] args){


double dub = 12345678.00;
DecimalFormat def = new DecimalFormat();

def.applyPattern("##,###,###.##;(##,###,###.##)");

def.setMinimumFractionDigits(2);

//def.setRoundingMode(RoundingMode.valueOf("HALF_DOWN") );//cant get this to work

System.out.print(def.format(dub));

System.exit(0);
		DecimalFormat f = new DecimalFormat("###########0.00");
		
		df = new DecimalFormat();
		//df = new DecimalFormat();
		//df.setMinimumFractionDigits(2);
				
		//df.applyPattern("##,###,###.00;(##,###,###.00)");
		

				//df.setRoundingMode(RoundingMode.valueOf("UNNECESSARY") );

		//num = df.parse("12345678.00",new ParsePosition(0));
		//num = f.parse("12345678.00",new ParsePosition(0));
num = f.parse("123456.00",new ParsePosition(0));
Float fl = new Float(num.floatValue());				
		System.out.println(fl);
		

	}


}

Open in new window

0
 
LVL 86

Expert Comment

by:CEHJ
ID: 39189369
String Amt = "1.00";
double d = Double.parseDouble(Amt); // Don't use capitals for variable names in Java
String amt = String.format("%.2f", d);
System.out.println(amt); // But it's now a String again

Open in new window

0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 

Author Comment

by:Newton21205
ID: 39189588
@CEHJ : i want a double not a string
0
 
LVL 35

Expert Comment

by:mccarl
ID: 39189718
What CEHJ is saying and trying to point out to you, is that a "double" has NO concept of "number of decimal places", ie. 1.00 = 1.0 = 1.00000000 = etc, etc. It is ONLY when it is converted to a String either explicitly using String.format, etc or implicitly (see below) that the number of decimal places that you want included in the String is important.

What do I mean by "converted implicitly" above? Well, in your original question, the last line says, Output:- 1.0. How did you get to that conclusion? I am assuming that at some point you did something along the lines of, System.out.println(Amt);??? If so, then in that one line, an implicit conversion to a String occurs. It has to because to write to the console, which is just a stream of characters, a number such as Amt needs to be converted to it's textual representation. "System.out" is actually a PrintStream object, and if you follow the trail of Javadoc references for the PrintStream .println(double) method, you will see those references describing this implicit conversion and ending up at Double.toString(double). If you read the description of the method in that Javadoc you will see why it printed "1.0" to the console.


So, what should YOU do then? Well, just use your Double everywhere that you need to representation a decimal number (of any number of decimal places), ie. add it to others, subtract, multiply, divide, whatever you want to do with it. And then AFTER you do all your mathematical operations, and you then want to print the result to the console, that's when you use the last two lines of CEHJ's post to "explicitly" convert the result to a String (that way YOU control the number of decimals included) and then print the String to the console.
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 39190284
@CEHJ : i want a double not a string
What is the mathematical difference between 1.0 and 1.00? Answer: there isn't one, which is why a number has no need of, and no means of, distinguishing between the two.
0
 
LVL 16

Accepted Solution

by:
krakatoa earned 250 total points
ID: 39190351
I posted the wrong code above, so for the record, this is what I meant to post :

String du = "12345678.00";
double dub = new Double(du);//12345678.00;
DecimalFormat def = new DecimalFormat();

def.applyPattern("##,###,###.00;(##,###,###.00)");

System.out.print(def.format(dub));

Open in new window

0

Featured Post

Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

Join & Write a Comment

Suggested Solutions

Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
Introduction This article is the first of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article explains our test automation goals. Then rationale is given for the tools we use to a…
Video by: Michael
Viewers learn about how to reduce the potential repetitiveness of coding in main by developing methods to perform specific tasks for their program. Additionally, objects are introduced for the purpose of learning how to call methods in Java. Define …
Viewers will learn how to properly install Eclipse with the necessary JDK, and will take a look at an introductory Java program. Download Eclipse installation zip file: Extract files from zip file: Download and install JDK 8: Open Eclipse and …

707 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now