Максимальное значение для столбца «Числовой тип» увеличивается при возврате в пользовательский интерфейс - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть столбец в дБ типа Number с точностью до 18 и шкалой 0. Когда я сохраняю максимальное значение (999999999999999999), он работает нормально. Но когда я пытаюсь получить это значение, контрольные примеры показывают правильное значение, но когда выходные данные отправляются в пользовательский интерфейс, они увеличиваются на 1. Таким образом, значение становится 1000000000000000000.

1 Ответ

0 голосов
/ 28 апреля 2020

С формат с плавающей запятой двойной точности в Википедии:

Точность 53-разрядного значения дает точность от 15 до 17 значащих десятичных разрядов.

Ваш номер имеет 18 цифр точности, поэтому он превышает точность, поддерживаемую double, и округляется до 1.0E18, что можно увидеть, выполнив этот код:

double d = 999999999999999999L;
System.out.println(d);

Make убедитесь, что значение не присвоено double где-либо в вашем коде.

Вы упомянули, что в тестовом коде указано правильное значение, но пользовательский интерфейс показывает его неверно, поэтому имейте в виду, что JavaScript Number является значением с плавающей запятой двойной точности, поэтому, если вы отправляете значение в пользовательский интерфейс как JSON, вам нужно отправить его в виде строки, а не числа.

...