Результат, который вы видите, происходит потому, что Math.Pow()
работает с числами с плавающей запятой, и когда вы достигнете 16-го десятичного знака, вы не сможете обязательно добавить один к наименее значимому десятичному числу значения и ожидать, что результат изменится.
Обычно в 64-битном (8-байтовом) IEEE 754 двоичном значении с плавающей запятой 53 мантиссы (включая подразумеваемый 1-битный).Ваш расчет Math.Pow(2, 53)
требует 54 бит в мантиссе, чтобы гарантировать изменение.Если вы добавите 2, вы увидите изменение.