Как использовать тип данных MySQL Decimal в php? - PullRequest
6 голосов
/ 06 февраля 2012

Надеюсь, только быстрый вопрос.У меня есть столбец DECIMAL в моей базе данных.Значение представляет собой очень маленькую десятичную дробь - суммирование этого значения для всех строк будет равно 1.

Теперь я хотел бы использовать это значение в моем приложении php, отобразить его, выполнить вычисления и сохранить его обратно.в базу данных.

Поскольку php имеет только типы integer и float, каков наилучший способ использовать это значение в php, чтобы не потерять какую-либо точность в вычислениях или отображении?

  • Сохраните значение в виде строки и используйте BC Math для вычислений
  • Приведите число как float - я знаю, что php-числа с точностью до хорошего числа (в зависимости от ОС)
  • Преобразовать значение в целое число, используя функцию, которая запоминает показатель степени
  • Что-то еще?

Спасибо

1 Ответ

0 голосов
/ 06 февраля 2012

Вам следует перейти на float, чтобы не потерять точность в вычислениях, и использовать number_format вывод для отображения ...

Примечания:
Это действительно зависит от ваших потребностей и от того, как вы хотите, чтобы ваш вывод обрабатывался, если вы хотите просто вырезать мантиссу после второго числа или выполнить какое-то округление.

При использовании BC Math со шкалой 2, например, 2.10/1.10 производит 1.90 при использовании number_format(2.10/1.10, 2) приведет к 1.91 (округляя результаты, как SELECT CAST(2.10/1.10 as DECIMAL(10,2)))

Обновление: . Как указано в комментариях, могут быть случаи, когда вы потеряете точность вычислений. Вероятно, будет лучше выполнять вычисления произвольной точности в самом MySQL, так что вы можете быть уверены, что ничего не потеряно во время математических операций.

...