Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Mailing Lists -> Oracle-L -> RE: Slightly OT: Rounding Negative Numbers
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!
-- Please see the official ORACLE-L FAQ: http://www.orafaq.com -- Author: Bill Buchan INET: wbuchan_at_uk.intasys.com 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: ListGuru_at_fatcity.com (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: Waleed.Khedr_at_FMR.COM 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: ListGuru_at_fatcity.com (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).Received on Wed Aug 28 2002 - 15:18:36 CDT