Solved

how print out all digits after decimal point for a variable (data type double) in java?

Posted on 2014-07-27
6
851 Views
Last Modified: 2014-07-29
Would like to print out max digits for a variable (data type double). For example,
double d1 = 100.01234567890123456789012345678901234567890123456789
double d2 =  2.0
How to print out d1/d2, which still keeps exact answer?

Another one:
d1 = 1.0; d2 = 3.0
How to print out the digits of d1/d2 as many as possible for this data type?
0
Comment
Question by:jl66
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
6 Comments
 
LVL 16

Expert Comment

by:krakatoa
ID: 40222692
Not sure your question makes much sense - to me at any rate.
0
 
LVL 27

Assisted Solution

by:rrz
rrz earned 250 total points
ID: 40222785
Please run this code.
import java.math.BigDecimal;
import java.math.MathContext;
public class TestD {

   public static void main(String args[]){
        double d1 = 100.01234567890123456789012345678901234567890123456789;
        double d2 = 2.0; 
        double d3 = 1.0;
	double d4 = 3.0;
        System.out.println(d1/d2);
        System.out.println(d3/d4);
	BigDecimal bd1 = new BigDecimal(100.01234567890123456789012345678901234567890123456789);
	BigDecimal bd2 = new BigDecimal(2.0);
	BigDecimal bd3 = new BigDecimal(1.0);
	BigDecimal bd4 = new BigDecimal(3.0);
	System.out.println(bd1.divide(bd2));
        System.out.println(bd3.divide(bd4,MathContext.DECIMAL128));
   }
}

Open in new window

0
 

Author Comment

by:jl66
ID: 40223290
Thanks for the tip.
If BigDecimal is not used, there is anything we can do with "double" to test the digit limit for "double" after the decimal point? The reason is that many math functions only deal with "double", but not BigDecimal.  We want to keep the precision as high as possible.
0
Online Training Solution

Drastically shorten your training time with WalkMe's advanced online training solution that Guides your trainees to action. Forget about retraining and skyrocket knowledge retention rates.

 
LVL 27

Assisted Solution

by:rrz
rrz earned 250 total points
ID: 40223499
double can only go so far. Consider
 double pi = Math.PI; // prints   3.141592653589793

Open in new window

But, we all know pi is a  Non-terminating decimal.
0
 
LVL 34

Accepted Solution

by:
sarabande earned 250 total points
ID: 40227076
double has a precision of 15 or 16 significant decimal digits. significant means it is regardless where the decimal point is. you can test that by printing the d1 of your first sample. you will see that the output would differ from input with the 16th or 17th digit.

the precision is not always the same because a double is not stored as a decimal but in binary format as a pair of mantissa and exponent (where both have a sign bit).  

you could store your values as biginteger what would increase the precision to 20 - 21 digits. that could make sense if you always know where the decimal point is which must be placed later for output.

for higher precisions you would need an array of some basic type and use algebraic methods for the arithmetical operations.

Sara
0
 

Author Closing Comment

by:jl66
ID: 40228222
Thanks a lot.
0

Featured Post

Salesforce Made Easy to Use

On-screen guidance at the moment of need enables you & your employees to focus on the core, you can now boost your adoption rates swiftly and simply with one easy tool.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Weekend adv creator 3 64
couple of eclipse 5 53
Configure a Bean in an XML file 4 49
printf performancy 11 86
Article by: Nadia
Linear search (searching each index in an array one by one) works almost everywhere but it is not optimal in many cases. Let's assume, we have a book which has 42949672960 pages. We also have a table of contents. Now we want to read the content on p…
The greatest common divisor (gcd) of two positive integers is their largest common divisor. Let's consider two numbers 12 and 20. The divisors of 12 are 1, 2, 3, 4, 6, 12 The divisors of 20 are 1, 2, 4, 5, 10 20 The highest number among the c…
Viewers will learn one way to get user input in Java. Introduce the Scanner object: Declare the variable that stores the user input: An example prompting the user for input: Methods you need to invoke in order to properly get  user input:
This tutorial explains how to use the VisualVM tool for the Java platform application. This video goes into detail on the Threads, Sampler, and Profiler tabs.

730 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