The way Java calculates round is (int)Math.floor(a + 0.5f)

So you could enforce your rounding algorithm this way:

import java.*;
public class Round {

         public static void main(String[] args) {
                 double a = 0.875;
                 int i_rounded;
                 if (a >= 0) i_rounded = (int)java.lang.Math.round(a*100);
                     else    i_rounded = (int)java.lang.Math.floor(a*100 -
0.5);
                 double z = i_rounded;
                 z  = z / 100;
                 System.out.println(z);
                 }
         }


Regards,

Waleed

-----Original Message-----
Sent: Wednesday, August 28, 2002 11:59 AM
To: Multiple recipients of list ORACLE-L



I'm trying to consolidate some numbers generated by a PL/SQL report vs. a 
Java based report and these seem to be out due to rounding errors on 
negative numbers.

In PL/SQL if I for example, round to 2 decimal places:

SQL> select round(-0.875,2) from dual;

ROUND(-0.875,2)
---------------
            -.88


In Java:


import java.*;

public class Round {

         public static void main(String[] args) {
                 double a = -0.875;
                 int i = (int)java.lang.Math.round(a*100);
                 double z = i;
                 z  = z / 100;
                 System.out.println(z);
                 }
         }

 >java Round
-0.87


which is 0.01 different (1 pence in this case).  If I use positive numbers 
(+0.875) when the answer is 0.88 for both PL/SQL and Java.  PL/SQL's answer 
looks "more"correct to me for the negative value - but what is the 
mathematically correct rounding of -0.875?!

Thanks!

- Bill.

-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.com
-- 
Author: Bill Buchan
  INET: [EMAIL PROTECTED]

Fat City Network Services    -- (858) 538-5051  FAX: (858) 538-5051
San Diego, California        -- Public Internet access / Mailing Lists
--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).
-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.com
-- 
Author: Khedr, Waleed
  INET: [EMAIL PROTECTED]

Fat City Network Services    -- (858) 538-5051  FAX: (858) 538-5051
San Diego, California        -- Public Internet access / Mailing Lists
--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).

Reply via email to