Post Reply 
(12C) Banker's Rounding Method
11-27-2018, 05:31 AM
Post: #1
(12C) Banker's Rounding Method
The banker's rounding method involves rounding numeric amounts to the nearest integer. When the number ends in 0.5 (1.5, 3.5, 8.5, etc), special rules apply:

The decimal gets rounded to the nearest even integer. For example: 0.5, 2.5, and 4.5 round down to 0, 2, and 4 respectively. However, 1.5, 3.5, and 5.5 are rounded up to 2, 4, and 6 respectively.

Code:
001  STO 0
002  INTG
003  STO 1
004  LSTx  
005  FRAC
006  STO 2
007   .
008  5
009   -
010   x=0
011   GTO 018
012   RCL 0
013   FIX 0
014   RND
015   STO 4
016   FIX 2
017   GTO 000
018   RCL 1 
019   2
020   ÷
021   FRAC
022   x=0
023   GTO 029
024   RCL 1
025   1
026   +
027   STO 4
028   GTO 000
029   RCL 1
030   STO 4
031   GTO 000

Original blog post: https://edspi31415.blogspot.com/2018/11/...nkers.html
Visit this user's website Find all posts by this user
Quote this message in a reply
11-27-2018, 06:42 PM (This post was last modified: 12-08-2018 08:46 PM by Albert Chan.)
Post: #2
RE: (12C) Banker's Rounding Method
I think banker's rounding method apply to non-integers too (edge case round-to-even).

For banker's rounding to nearest integer, this is shorter

Code:
01 .
02 5
03 X≤Y ; handle negative input
04 CHS
05 -
06 FRAC
07 x=0 ; edge case ?
08 GTO 12
09 Lst-X
10 INTG
11 GTO 00
12 Lst-X ; edge round-to-even
13 2
14 ÷
15 INTG
16 2
17 ×
18 GTO 00

Example:
1233.5 R/S ==> 1234
1233.9 R/S ==> 1234
1234.5 R/S ==> 1234

1233.49 R/S ==> 1233
1234.51 R/S ==> 1235

Updated: code numbering start from 1, instead of 0
Find all posts by this user
Quote this message in a reply
12-08-2018, 08:35 PM
Post: #3
RE: (12C) Banker's Rounding Method
Just a slight correction since the code starts at line 1, not 0:

Code:
01   .
02   5
03   x ≤ y
04  CHS
05  -
06  FRAC
07 x = 0
08 GTO 12
09 LST x
10 INTG
11 GTO 00
12 LST x
13 2
14 ÷
15 INTG
16 2
17 *
18 GTO 00

Otherwise, brilliant!
Visit this user's website Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 2 Guest(s)