Subject: Re: RPG math From: Dave Date: Thu, 12 Apr 2012 16:46:34 +0200 List-archive: List-help: List-id: RPG programming on the IBM i / System i List-post: List-subscribe: , List-unsubscribe: ,

Wow, a google search on "RPG's fixed point precision rules" gives
Charle's post in first position 25minutes after he sent it.

Le 12 avril 2012 16:08, Charles Wilt <charles.wilt@xxxxxxxxx> a écrit :
My first thought...

Why worry about it RPG when you don't appear to be worried about it Excel?

Are you under the impression that Excel is magical and thus doesn't
suffer from the same precision issues as any other piece of software?
http://lmgtfy.com/?q=excel+precision+error

Given that Excel apparently stores numbers as floating point and that
there are differences between floating point arithmetic and RPG's
fixed decimal arithmetic...expecting the same results is probably a
fantasy.

Personally, I'd consider RPG's fixed decimal answer "right" over
Excel's floating point answer when dealing with real world values
especially for currency.
http://c2.com/cgi/wiki?FloatingPointCurrency

However, if you want to consider Excel's floating point answer
"right", it would behoove you to use floating point variables in RPG
to match.

d myRate   s  8f 0

The true "right" solution in my mind
1) use RPG fixed point
2) Understand RPG's fixed point precision rules
3) use %round()  and/or %dec() as needed to control intermediate
results as you want.

HTH,
Charles

On Thu, Apr 12, 2012 at 6:55 AM, Dave <dfx1@xxxxxxxxxxxxxx> wrote:
Hi all,

I recently asked how to access an EXCEL formula from an RPG program
but here I am now having to reproduce the EXCEL PMT function in RPG.
Maybe someone has already done this?
Anyway, I've been given a formula to code and an EXCEL spreadsheet to
control my results.

Which I've coded like this :

MonthlyRate = interestRate /12;
MonthlyPayment = ( LoanAmount / MonthlyRate ) *  ( 1 - ( 1 +
MonthlyRate ) ** ( -1  * numberOfPayments ));

LoanRemaining =
12 * MonthlyPayment *
1 - ( 1 + MonthlyRate ) ** ( -1 * numberOfPayments -

My fields are defined so (imposed) :

LoanAmount,  MonthlyPayment, LoanRemaining 13S2

I've very little experience with RPG math and I'm worried about errors
from intermediate calculations
How should I define the rates MonthlyRate and interestRate so I don't
get any loss of information after the divisions?

Thanks.
--
This is the RPG programming on the IBM i / System i (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.

--
This is the RPG programming on the IBM i / System i (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.