В базе данных есть некий SteamID:
76561198160247832
Он лежит в ячейке (steamid) в базе данных. Я случайным образом выбираю одну строку с каким-либо steamid (в данном случае строка содержит предоставленный выше стимайди), и вывожу его в консоль:
con.query("SELECT * FROM players WHERE id=" + mysql.escape(id), function (err, result20, fields) {
log("Победитель: " + result20[0].steamid);
Мне возвращает:
Победитель: 76561198160247840
В чём может быть проблема? В таблице steamid имеет тип bigint (255) и заполнен верно.
Из 64 бит, отведённых на число, сами цифры числа занимают до 52 бит, остальные 11 бит хранят позицию десятичной точки и один бит – знак. Так что если 52 бит не хватает на цифры, то при записи пропадут младшие разряды.
Интерпретатор не выдаст ошибку, но в результате получится «не совсем то число», что мы и видим в примере выше. Как говорится: «как смог, так записал».
источник
Проще говоря, если в числе больше 16 знаков, будет искажение:
console.log(76561198160247832)
console.log(765611981602478328)
Как говорилось в ответе выше - для записи таких длинных чисел тупо "не хватает памяти", но это можно исправить двумя строками:
При CreateConnection
указать параметры:
supportBigNumbers: true, bigNumberStrings: true.
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Для кнопки с HTML документа надо написать функцию для JS React которая считывает информацию с input type="text" и записывает в такую переменную