Forums
New posts
Search forums
Members
Current visitors
Log in
Register
What's new
Search
Search
Search titles only
By:
New posts
Search forums
Menu
Log in
Register
Install the app
Install
Forums
Archive
Archive
Ruby
Rounding error, (100.0 * 9.95).to_i == 994
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
Reply to thread
Message
[QUOTE="trans. (T. Onoma), post: 4447445"] On Thursday 28 October 2004 11:06 am, Dan Janowski wrote: | I just want to thank all of you for a stimulating, interesting and, in | the end, informational discussion. Now I know why COBOL uses V99 | numbers! :) My father was a professional Cobol programmer for ~25 years. I always loved all those strange and wondrous PIC declarations. | Has there been any consideration of using a Numeric class that is fixed | point? Something that is more like 995/100 representation internally? | There is sense is storing money in pennies instead of decimal dollars, | but it makes things a little more messy. How 'bout a good Money class ? T. Sorry had to do it ;) 000100 IDENTIFICATION DIVISION. 000200 PROGRAM-ID. TheTowersOfHanoi. 000300 AUTHOR. Amit Singh <[URL]http://hanoi.kernelthread.com[/URL]>. 000400 000500 ENVIRONMENT DIVISION. 000600 000700 CONFIGURATION SECTION. 000800 SOURCE-COMPUTER. ALMOST-PORTABLE. 000900 OBJECT-COMPUTER. ALMOST-PORTABLE. 001000 001100 DATA DIVISION. 001200 001300 WORKING-STORAGE SECTION. 001400 001500 01 STACK-SPACE. 001600 02 ESP PIC S9(3) COMP. 001700 02 STACK-FRAME OCCURS 1024. 001800 03 S-N PIC 9(2). 001900 03 S-FROM PIC X(2). 002000 03 S-USING PIC X(2). 002100 03 S-TO PIC X(2). 002200 03 S-PROC PIC 9(1). 002300 002400 01 CURRENT-FRAME. 002500 02 CN PIC 9(2) VALUE 3. 002600 02 CFROM PIC X(2) VALUE "1". 002700 02 CUSING PIC X(2) VALUE "2". 002800 02 CTO PIC X(2) VALUE "3". 002900 02 CPROC PIC 9(1) VALUE 0. 003000 003100 01 TMP-FRAME. 003200 02 TN PIC 9(2) VALUE 3. 003300 02 TFROM PIC X(2) VALUE "1". 003400 02 TUSING PIC X(2) VALUE "2". 003500 02 TTO PIC X(2) VALUE "3". 003600 02 TPROC PIC 9(1) VALUE 0. 003700 003800 PROCEDURE DIVISION. 003900 BEGIN-PROGRAM. 003910 PERFORM GET-DISKS 004000 MOVE 1 TO ESP 004100 MOVE CURRENT-FRAME TO STACK-FRAME (ESP) 004150 PERFORM DO-HANOI 004200 UNTIL ESP = ZERO 004300 . 004500 STOP RUN 004600 . 004700 004800 DO-HANOI. 004900 MOVE STACK-FRAME (ESP) TO CURRENT-FRAME 005000 SUBTRACT 1 FROM ESP 005100 IF CPROC = 0 005200 IF CN = 1 005300 PERFORM MOVE-DISK 005400 ELSE 005500 MOVE CN TO TN 005600 MOVE CFROM TO TFROM 005700 MOVE CUSING TO TUSING 005800 MOVE CTO TO TTO 005900 MOVE 1 TO TPROC 006000 ADD 1 TO ESP 006100 MOVE TMP-FRAME TO STACK-FRAME (ESP) 006200 MOVE CN TO TN 006300 SUBTRACT 1 FROM TN 006400 MOVE CFROM TO TFROM 006500 MOVE CTO TO TUSING 006600 MOVE CUSING TO TTO 006700 MOVE 0 TO TPROC 006800 ADD 1 TO ESP 006900 MOVE TMP-FRAME TO STACK-FRAME (ESP) 006950 END-IF 007000 ELSE 007100 PERFORM MOVE-DISK 007200 MOVE 0 TO TPROC 007300 MOVE CTO TO TTO 007400 MOVE CFROM TO TUSING 007500 MOVE CUSING TO TFROM 007600 MOVE CN TO TN 007700 SUBTRACT 1 FROM TN 007800 ADD 1 TO ESP 007900 MOVE TMP-FRAME TO STACK-FRAME (ESP) 008000 END-IF 008100 008200 MOVE-DISK. 008300 DISPLAY CFROM 008400 "--> " 008500 CTO 008600 008700 GET-DISKS. 008800 DISPLAY "How many disks to solve for? " NO ADVANCING 008900 ACCEPT CN 009000 IF CN < 1 OR CN > 10 009100 DISPLAY "Invalid number of disks (1 <= N <= 10)." 009200 EXIT PROGRAM 009300 END-IF 009400 009500 . [/QUOTE]
Verification
Post reply
Forums
Archive
Archive
Ruby
Rounding error, (100.0 * 9.95).to_i == 994
Top