# Calculating interest query

• Nope DECIMAL(19,12)

• The only question I would have asked is whether you'd confirmed with your business side that the interest is compounded monthly and not daily or continuously. To support daily compounding, you would add calculations for the number of days in each month and, of course, divide the annual rate by 365 (and maybe 366 in leap years if that's the way the rate was defined). "Continuous" compounding would involve using a formula based on powers of e, the root for natural logarithms.

It seems clear that your requirements were for monthly compounding, regardless of the number of days elapsed, but I thought it worth while for others reading this thread to be made aware of possible wrinkles.

• nathan 7372 (3/1/2010)

Nope DECIMAL(19,12)

Thanks for the feedback!

Decimal places and rounding considerations scare me. I freely admit to being a total amateur with that sort of thing.

Last thing about that dollar-difference...do we know which was right/less wrong? It might be obvious that it is the method with a higher decimal scale, but I don't want to just assume that...

Paul

• Thats the funny thing about decimal places. Technically, you are both right. Obviously Jeff's higher precision datatype leads to a more mathematically accurate answer. At the same time however, accounting is looking at having me calculate it with as little as 2 decimal places in order to save money. When all of those decimal places get truncated the company saves. So really precision has more to do with business requirements than it does with getting the "right" answer. Just food for thought.

• Reminds me of a Superman film!

• nathan 7372 (3/2/2010)

Thats the funny thing about decimal places. Technically, you are both right. Obviously Jeff's higher precision datatype leads to a more mathematically accurate answer. At the same time however, accounting is looking at having me calculate it with as little as 2 decimal places in order to save money. When all of those decimal places get truncated the company saves. So really precision has more to do with business requirements than it does with getting the "right" answer. Just food for thought.

After chewing on this "food for thought", I think the accountants may be right. Although you certainly want to use as high a precision as possible in calculations, the fact that the result is paid monthly means it should probably be expressed and saved rounded to two decimal places. The next month's calculation should use that actual monetary value as a base, not an imaginary 12 decimal place figure.

It's not about shaving fractions for the company's benefit, but about accurately representing the real value of the account. You wouldn't cut a check for \$354.395840049589, so why would you say that's the balance at the end of July?

• nathan 7372 (3/2/2010)

Thats the funny thing about decimal places. Technically, you are both right. Obviously Jeff's higher precision datatype leads to a more mathematically accurate answer. At the same time however, accounting is looking at having me calculate it with as little as 2 decimal places in order to save money. When all of those decimal places get truncated the company saves. So really precision has more to do with business requirements than it does with getting the "right" answer. Just food for thought.

I agree... you have to "close" the books each month on two decimal places.

As a side bar... If you keep track of the pennies, you can probably afford to buy a new red stapler. 😉

--Jeff Moden

RBAR is pronounced "ree-bar" and is a "Modenism" for Row-By-Agonizing-Row.
First step towards the paradigm shift of writing Set Based code:
________Stop thinking about what you want to do to a ROW... think, instead, of what you want to do to a COLUMN.

Change is inevitable... Change for the better is not.

How to post code problems
How to Post Performance Problems
Create a Tally Function (fnTally)

• Jeff Moden (3/2/2010)

nathan 7372 (3/2/2010)

Thats the funny thing about decimal places. Technically, you are both right. Obviously Jeff's higher precision datatype leads to a more mathematically accurate answer. At the same time however, accounting is looking at having me calculate it with as little as 2 decimal places in order to save money. When all of those decimal places get truncated the company saves. So really precision has more to do with business requirements than it does with getting the "right" answer. Just food for thought.

I agree... you have to "close" the books each month on two decimal places.

I'm not sure about that being compliant with the law of [WhereverYouAre].

AFAIK counting interest rates have to be at least precise to the third or even forth digit (guess what the scale of the MONEY data type is... 😉 ).

Over here (Germany) there's some rumor about a guy who wrote a program for a bank and transferred the cumulated friction of Cents (aka rounding difference) per account and month to his own account.

The bank took him to court for fraud. His statement was something like: "If I took money from somebody at all, it has been the owner of the accounts, but not the bank itself. The bank has no legal right of ownership of the rounding difference."

Whether it's true or not, the banks over here now have to add up rounding differences. (I'm not sure if they do, though. ...;-) )

Lutz
A pessimist is an optimist with experience.

How to post performance related questions[/url]
Links for Tally Table [/url] , Cross Tabs [/url] and Dynamic Cross Tabs [/url], Delimited Split Function[/url]

• The way I believe they do it in the states is with the interest rate out to "X" places as you say but the principle is rounded to the nearest penny each month or at the receipt of each payment if such a thing is allowed by the loan contract.

--Jeff Moden

RBAR is pronounced "ree-bar" and is a "Modenism" for Row-By-Agonizing-Row.
First step towards the paradigm shift of writing Set Based code:
________Stop thinking about what you want to do to a ROW... think, instead, of what you want to do to a COLUMN.

Change is inevitable... Change for the better is not.

How to post code problems
How to Post Performance Problems
Create a Tally Function (fnTally)

• Jeff Moden (3/2/2010)

If you keep track of the pennies, you can probably afford to buy a new red stapler. 😉

That would be awesome! I can never find a stapler when I need one.

• Paul White (3/2/2010)

Jeff Moden (3/2/2010)

If you keep track of the pennies, you can probably afford to buy a new red stapler. 😉

That would be awesome! I can never find a stapler when I need one.

Just don't get upset and burn the place down if you can't.

• Ah... good that some have seen the movie.

--Jeff Moden

RBAR is pronounced "ree-bar" and is a "Modenism" for Row-By-Agonizing-Row.
First step towards the paradigm shift of writing Set Based code:
________Stop thinking about what you want to do to a ROW... think, instead, of what you want to do to a COLUMN.

Change is inevitable... Change for the better is not.

How to post code problems
How to Post Performance Problems
Create a Tally Function (fnTally)

• Jeff Moden (3/4/2010)

Ah... good that some have seen the movie.

To let the rest of the world in on it, we're talking about Office Space. ("It's good to be a gangsta...." - ROFL).

-----

• John,

That link seems to be broken, which is a shame since I would like to be one of the cool kids that's in on the joke. :unsure:

Paul

• This is the link John tried to post...

http://www.imdb.com/title/tt0151804/

It's a cult classic, totally silly, and (unfortunately) sometimes truer than life in a cube. 😛

--Jeff Moden

RBAR is pronounced "ree-bar" and is a "Modenism" for Row-By-Agonizing-Row.
First step towards the paradigm shift of writing Set Based code:
________Stop thinking about what you want to do to a ROW... think, instead, of what you want to do to a COLUMN.

Change is inevitable... Change for the better is not.