Solved

how to subtract decimal????

Posted on 2002-05-27
15
358 Views
Last Modified: 2008-02-26
hi guys!!!!

i had a program that subtract two double variable.here's my code:



import java.awt.*;
import java.awt.event.*;

public class Try
{

        public static void main(String argv[])
    {
            Frame fr = new Frame();
            fr.pack();
            fr.setVisible(true);

            Panel panel = new Panel();

            final TextField tf1 = new TextField(15);
            final TextField tf2 = new TextField(15);

            final Button subtract = new Button("Minus");
            Button clear = new Button("Clear");
            subtract.addActionListener(new ActionListener()
            {
               public void actionPerformed(ActionEvent e)
               {
                         if (e.getSource() == subtract)
                         {
                              double a = new Double(tf1.getText()).doubleValue();
                              double b = new Double(tf2.getText()).doubleValue();

                              System.out.println(a-b);
                         }
               }

          });

            panel.add(tf1);
            panel.add(tf2);
            panel.add(subtract);
            panel.add(clear);

            fr.add(panel);
       }//End of main

       }


OUTPUT:

TF1 = 50.56
TF2 = 25
DIFFERENCE = 25.560000000000002


how would i make it so that it will only return 25.26???

thanks in advance!!!




0
Comment
Question by:rdy1437
[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
  • 7
  • 4
  • 3
  • +1
15 Comments
 
LVL 92

Expert Comment

by:objects
ID: 7036647
That's simply a rounding error resulting from floating point arithmetic. If you need to avoid this then use the BigDecimal class, or simply format your output to two decimal places.
0
 

Author Comment

by:rdy1437
ID: 7036689
can you provide sample code for this??
0
 
LVL 92

Expert Comment

by:objects
ID: 7036709
BigDecimal a = new BigDecimal("50.56");
BigDecimal b = new BigDecimal("25");
BigDecimal c = a.subtract(b);
System.out.println(c);


0
PeopleSoft Has Never Been Easier

PeopleSoft Adoption Made Smooth & Simple!

On-The-Job Training Is made Intuitive & Easy With WalkMe's On-Screen Guidance Tool.  Claim Your Free WalkMe Account Now

 
LVL 92

Expert Comment

by:objects
ID: 7036713
Floating point numbers are only an approximation (albeit quite an accurate one).
0
 
LVL 35

Expert Comment

by:girionis
ID: 7036722
 There is also an excellent tutorial on BigDecimal: http://www.javaworld.com/javaworld/jw-06-2001/jw-0601-cents.html
0
 
LVL 2

Expert Comment

by:vogen
ID: 7039576
// rdy1437, here is the solution:

import java.awt.*;
import java.awt.event.*;
import java.text.DecimalFormat;

public class Try
{
     public static void main(String argv[])
  {
       Frame fr = new Frame();
    fr.pack();
    fr.setVisible(true);
    Panel panel = new Panel();

    final TextField tf1 = new TextField(15);
    final TextField tf2 = new TextField(15);

    final Button subtract = new Button("Minus");
    Button clear = new Button("Clear");
    subtract.addActionListener(new ActionListener()
    {
     public void actionPerformed(ActionEvent e)
     {
      DecimalFormat twoDigits = new DecimalFormat( "0.00" );
      if (e.getSource() == subtract)
      {
        double a = new Double(tf1.getText()).doubleValue();
        double b = new Double(tf2.getText()).doubleValue();
                 double result =(double) a - (double) b;
                    System.out.println( twoDigits.format(result) );
      }
   }
   });
   panel.add(tf1);
   panel.add(tf2);
   panel.add(subtract);
   panel.add(clear);
   fr.add(panel);
   }//End of main
}
0
 
LVL 2

Expert Comment

by:vogen
ID: 7039589
DecimalFormat object that is initialized with the string "0.00". Each 0 is a format flag that specifies a required digit position in the formatted floating-point number.

pls ask if have any question..

cheers
0
 
LVL 92

Expert Comment

by:objects
ID: 7040541
vogen,

1. Please avoid proposing answers as it locks the question and make it harder for other experts to contribute.

2. I had already suggested the option of using formatting.
0
 

Author Comment

by:rdy1437
ID: 7040694
thanks guys for your comments.i already used the comment made by objects...
0
 
LVL 92

Expert Comment

by:objects
ID: 7040714
Good to hear it helped :-)
Can you accept my comment as an answer then please.
0
 
LVL 2

Expert Comment

by:vogen
ID: 7043053
solly, i was only trying to help.. ::(
0
 

Author Comment

by:rdy1437
ID: 7043417
hey objects how can i give you the points?
0
 
LVL 92

Accepted Solution

by:
objects earned 50 total points
ID: 7043427
reject the proposed answer, and accept my comment as an answer :)
0
 
LVL 92

Expert Comment

by:objects
ID: 7043547
0
 
LVL 2

Expert Comment

by:vogen
ID: 7043677
I spent my time and this is what I get
it's not fair
thanks anyway
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

An old method to applying the Singleton pattern in your Java code is to check if a static instance, defined in the same class that needs to be instantiated once and only once, is null and then create a new instance; otherwise, the pre-existing insta…
Java functions are among the best things for programmers to work with as Java sites can be very easy to read and prepare. Java especially simplifies many processes in the coding industry as it helps integrate many forms of technology and different d…
Viewers will learn about arithmetic and Boolean expressions in Java and the logical operators used to create Boolean expressions. We will cover the symbols used for arithmetic expressions and define each logical operator and how to use them in Boole…
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.
Suggested Courses

623 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