С формат с плавающей запятой двойной точности в Википедии:
Точность 53-разрядного значения дает точность от 15 до 17 значащих десятичных разрядов.
Ваш номер имеет 18 цифр точности, поэтому он превышает точность, поддерживаемую double
, и округляется до 1.0E18
, что можно увидеть, выполнив этот код:
double d = 999999999999999999L;
System.out.println(d);
Make убедитесь, что значение не присвоено double
где-либо в вашем коде.
Вы упомянули, что в тестовом коде указано правильное значение, но пользовательский интерфейс показывает его неверно, поэтому имейте в виду, что JavaScript Number является значением с плавающей запятой двойной точности, поэтому, если вы отправляете значение в пользовательский интерфейс как JSON, вам нужно отправить его в виде строки, а не числа.