HP Forums
(12C) Banker's Rounding Method - Printable Version

+- HP Forums (https://www.hpmuseum.org/forum)
+-- Forum: HP Software Libraries (/forum-10.html)
+--- Forum: General Software Library (/forum-13.html)
+--- Thread: (12C) Banker's Rounding Method (/thread-11852.html)



(12C) Banker's Rounding Method - Eddie W. Shore - 11-27-2018 05:31 AM

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/ti-84-plus-and-hp-12c-platinum-bankers.html


RE: (12C) Banker's Rounding Method - Albert Chan - 11-27-2018 06:42 PM

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


RE: (12C) Banker's Rounding Method - Eddie W. Shore - 12-08-2018 08:35 PM

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!