What's you're seeing is the nature of floating point math.
In base 10, what's 1/3 in decimal form?
0.333333333333333333333333333333333333...more 3333333333..... more 33333333....
It's a non-terminating decimal value.
1 / 3 * 3 should equal 0.9999999999999999... Yet we call it 1. Doesn't that mean if we calculate 0.3333333333333333 * 3, that we're going to get a wrong answer when we call it 1?
Absolutely. Base-10 math has rounding points where it says, "Close enough to X value, so let's call it X." You can't perfectly represent non-terminating values with a terminating technology (most calculators only display X number of digits after all), and we're used seeing that in base-10 math.
Computers, on the other hand, think in base-2 math. They hold the exact same problem, but with different values that we're not used to.
For example, take a cake and cut me EXACTLY 1/10th of it, just by cutting and adding together halves.
Cut in half = .5.. too big.
Cut in half = .25.. too big
Cut in half = .125... too big
Cut in half = ..0625.. too small! We want .1
Cut in half and together = 0.9375... closer, but still not there!
Try as you might, you can never take those perpetually smaller halves and be able to make 1/10th of a cake with them. At some point, you'll hit the atomic level and have .099999999871342 chunks of cake, but you'll never make 0.1 with base-2 numbers.
That's just the limit of the base system we're using!
So how the heck do banks track money with computers then? It's impossible, right?!!
It would be if the used floating point math!
Instead, they keep everything as INTEGER values. The bank doesn't count that you have 1,234.56 dollars in an account. You've got 123,456 PENNIES in an account. All the math is based on INTEGER calculations.
So for your examples, you would do something like:
DEFLNG A-Z
a = 11743008
a1 = (a \ 10) * 10 'since we're limiting to 1 decimal place, this is equivalent to INT stripping off the decimal values
a2 = a - a1
Instead of counting 1,174,300.8 dollars, we instead counted, and did math with, 11,743,008 dimes.
Stick with integers if you want perfect precision. Floating point values are built so "close enough is good enough".