MySQL - значение 1 в DECIMAL (2, 2) выходит как 0.99

Я сохраняю денежные значения, и я читал, что FLOAT имеет проблемы с внутренним округлением (хотя я не могу сказать, что когда-либо замечал какие-либо проблемы), и что лучше использовать DECIMAL.

Итак, я использую DECIMAL, но когда я пытаюсь установить значение в 1, он сохраняется как 0.99. Я буду использовать это значение в JavaScript в какой-то момент, и я знаю, что мои вычисления JS будут неправильными, потому что это 0.99 не 1.00.

Почему он это делает, и я должен просто использовать FLOAT?

Ответ 1

Вам нужно DECIMAL(4, 2) взглядом вещей. DECIMAL(2, 2) допускает только диапазон -0.99 to 0.99

Точность представляет собой количество значащих цифр, которые хранятся для значений, а шкала представляет количество цифр, которые можно сохранить после десятичной точки., поэтому в вашем случае вы не определили столбец, чтобы разрешить любую целочисленную часть вообще.