Using decimal, like I proposed, then you can give 0.25 and 4 x 0.25 is 1 coin
if people gave 0.249999999 then with decimal then it shows exactly since rounding is not needed.
and 4 times that would show that it is nearly 1 safecoin but not actually, but due to rounding with binary it shows as 1.0 safecoin.
But my point was your rounding required by binary
The APP says the price is 1/4 safecoin, so then the APP requests the closest to the amount. And in retrospect 1/4 is not best example. Better to have chosen an amount that is not exact in binary form
So the APP requests the closest amount but falls short of 1 safecoin when all the parts are added up, yet in decimal it does. But because of rounding it doesn’t show.
Using 64 (or 96 or 128) fixed point for the decimal then the exact amounts can be sent and the figure is accurate to 17 decimal places (or whatever due to 96 or 128 bit). And amount of 35 pico safecoins is represented exactly as 3500000
If you are using a balance system then I still disagree that using 3 separate integers for the decimal is sensible or desirable. Just use one integer of the size you want.
And as in my proposal if you want to limit the resolution early on so people cannot send trillions and trillions of 10^-17 safecoins (1 div) spamming the system while the network is young then its easy to implement a limit to the decimal places that the network will accept for transactions. Then as the network grows the net s/w update can increase that limit by a few places. So maybe release with 2 places then after it proves itself the next update could have 4 or 6 places. Obviously the actual figure is always 17 decimal places so its a config thing for the net s/w and app s/w
My critique of 3 x uint32 is nsfw.
- Its unnecessary
- Its unneeded complexity for no shown benefit
- It introduces (v.small) inaccuracies for 99% of the people using a decimal based numbering system. There is a reason that we are still teaching and using decimal for our numbering system and not converting to base 2 in this computer age.
- More complex for network code and for APP code (without any shown benefit) and the associated test time and bug potential
- naming scheme is only needed if this idea is used.
Benefits
- keeps people guessing
- sounds intricate and complex. (Trying to sound like a really smart thing only a brainy person could think of)
- Sounds cool and rolls of the tongue a bit