• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 2583
  • Last Modified:

Restrict to 2 decimal places

I would appreciate advice as to how to limit the return from a calculation to 2 decimal places.

WTA

LRH

/*
     Java Class for calculating and comparing the range and average of figures input by the user  
*/

public class AverageRangeClass{
     private double sum, max, min;
     private int count;

     public class AverageRangeClass(){
          sum=0;
          count=0;
          max=0;
          min=0;
     }

     public void InputValue(double number){
           sum+=number;
           count++;
          if(count==1){
               max=number;
               min=number;
          }    
          else if(number > max)
          max=number;
               else if(number < min)
               min=number;
     }

     public double rangeToAverage(){
          return ((max-min)/(sum/count));

     }
     
}

/*
     Java program to check samples are
     maintained within a specified range,
     using KiloConv class, AverageRange class
*/

public class SampleCheck{
     public static void main(String arg[]){
          double kilograms;
          int stns, lbs, i, numToSample;

          KiloConvClass kcc = new KiloConvClass();
          AverageRangeClass arc = new AverageRangeClass();
          SampleRulesClass src = new SampleRulesClass();

          System.out.println("How many samples are there?\n");
               numToSample=Input.readInt();
          for(i=1; i<=numToSample; i++){
               
          System.out.print("Please enter stones weight:");
          stns = Input.readInt();
          System.out.print("Please enter pounds weight:");
          lbs = Input.readInt();

          kilograms = kcc.ConvToKilo(stns,lbs);

          arc.InputValue (kilograms);
     
System.out.println("\nRange to Average = "+arc.rangeToAverage());

          }
     }
}
         
0
LittleRedHat
Asked:
LittleRedHat
  • 2
  • 2
1 Solution
 
m_onkey_boyCommented:

Change:

System.out.println("\nRange to Average = "+arc.rangeToAverage());

To:

java.text.NumberFormat nf = java.text.NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2);


System.out.println("\nRange to Average = " + nf.format(arc.rangeToAverage()));
0
 
LittleRedHatAuthor Commented:
Many thanks.  That's a great help.  The points are yours.

But please could I ask an extra favour ... if you have a few more moments to spare, I would appreciate if you could give me a quick/brief explanation of the code and how it works.  I'm vaguely following it, but would like to understand it.

With thanks again.

LRH
0
 
m_onkey_boyCommented:
OK.  

java.text.NumberFormat is a class that formats numbers/time-date/currency.  

NumberFormat nf = NumberFormat.getNumberInstance() returns a NumberFormat object that knows how to format numbers based on the default locale of your machine/server.  If you want to format your number how a German may expect to see it, you can use:

NumberFormat nf = NumberFormat.getNumberInstance(new Locale("de", "DE"));

Anyway, the next step is to tell the NumberFormat how many digits past the decimal you want to display, as you may want different precision for different tasks.

This is done here:

nf.setMaximumFractionDigits(2);

Now, all you have to do is pass in a number you want to format and it will handle any rounding and formatting needed.

double dd = 4.5432340001f
String str = nf.format(dd);

Here str will be 4.54, in String form.

Note:  This can be done in reverse:

String strNumber = 4.54;
double dd = nf.parse(strNumber);



0
 
LittleRedHatAuthor Commented:
Thanks a million.  I really appreciate your taking the time and trouble to explain.  Your explanation has completely cleared the haze. :-)

Sorry I can't double the points :-(  but I'm almost out at the moment, having needed to post a few SOS's as I muddle through my first attempt at Java.

Hope you wont mind just double thanks instead.

LRH

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now