often wrong but he can't be that dumb. You need hard work to equal such level of obnoxious stupidity.
Indeed, my apologies. The long int size cannot be the explanation for the 21 million BTC limit.
21 million BTC times 10^8 satoshis per BTC is 2'100'000'000'000'000 sat, much less than 2^64.
It is just a little less than 2^51 = 2'251'799'813'685'248.
A double-precision float in 64-bit IEEE format can represent exactly all unsigned integers up to 2^53.
Some languages (e.g. GNU Awk) use IEEE doubles as the default (or only) numeric format.
It is good practice to leave a couple of extra bits in the representation of a quantity, to reduce the risk of overflow during computations,
e.g. in 'x = 3*amount/4'.
If the maximum number of satoshis had been set to exactly 2^51 (or 2^51 - 1), the initial block reward would have had to be a
fractional number of BTC, even if the halving period was set to a funny number like 225179 intead of the round 210000.
In other words, 50 BTC/block and halving every 210000 blocks are two round numbers that happen to result in a total number of satoshis just under 2^51.
EDIT: The exact number of satoshis that will ever be created is claimed to be 2'099'999'997'690'000, but I haven't checked that.