Shlop
@Shlop
Full Stack Developer (PHP/Laravel/JavaScript)

Какой тип использовать? DECIMAL либо FLOAT?

Здравствуйте, подскажите пожалуйста, есть у меня таблица в базе данных, где хранятся некоторые рассчитанные значения, и вот когда они рассчитываются и записываются в БД, иногда появляется вот такое число 4.4408920985006E-16 причём оно появляется когда должен получаться 0. И я вот думаю, может быть попробовать изменить тип полей, в базе данных, сейчас вообще там тип text. И вот какой тип будет правильнее DECIMAL или же Float ? Заранее благодарю за ответ.
5a5df18879df2978512263.jpeg
  • Вопрос задан
  • 794 просмотра
Пригласить эксперта
Ответы на вопрос 3
@artem78
Float хранит значения в приближённой форме, поэтому не рекомендуется использовать его для точных рассчётов (будут появляться неточности в младших разрядах). Для финансов используют Decimal или Integer.

https://ru.wikipedia.org/wiki/Float
Ответ написан
Комментировать
AlexMcArrow
@AlexMcArrow
Люблю РНР, да я такой!
ИМХО - мне нравиться decimal, при желании можно хранить зоть 20 знаков после точки decimal(10,20)
В добавок - blog.sergey-lysenko.ru/2014/01/float-double-numeri...
Ответ написан
Комментировать
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Если необходимое количество знаков после запятой может меняться - то DECIMAL с указанной точностью + обязательно использовать для математики какую-нибудь либу которая умеет в точность, в противном случае результат Вас может жестко огорчить
$a = 5.2 * 3;
$a = $a - 15.6;
echo ''.$a; // выводит 1.7763568394003E-15
https://3v4l.org/NnLTF

Альтернативное решение: если точность везде фиксирована, а сами цифры не очень большие - храните в integer/big integer и при выводе делите на нужное число.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы