Это стандартное поведение для чисел с плавающей запятой, использующих стандарт IEEE 754 , который Firestore использует . Короче говоря, компьютеры теряют точность при эффективном хранении данных с плавающей запятой.
Если вы не можете принять это поведение, вам не следует хранить числа с плавающей запятой вообще, а вместо этого просто хранить целые числа. Целое число должно содержать всю требуемую точность, которая обычно требуется для эквивалента с плавающей запятой, за исключением того, что вы умножаете число с плавающей запятой на требуемую точность.
Например, если вам нужно три десятичных знака точности (например, 5,005 ), умножьте это число с плавающей точкой на 1000, отбросьте дробную часть и сохраните целое число 5005. Если вам нужно добавить .005, вместо этого вы должны добавить 5. Затем вы можете отформатировать это число любым способом на клиенте.