я использую number_format
отображать десятичные числа в разных форматах (цены, согласно региональной конфигурации и т. д.). Я предпочитаю это money_format
, В любом случае number_format используется для отображения количества текста, поэтому, например, я буду отображать $1,203.56
для США и 1.090,00€
для Европы. Конечно, для внутреннего расчета суммы цен предметов и т. Д. Я пользуюсь number_format
округлять цены, скидки и т. д. И я пользуюсь
number_format($price * quantity- $discounts ... , 2, ".", "");
Я понимаю, что это правильно и добавит все значения идеально, и ограничен 2 десятичными точками в конечном результате. Я храню это в базе данных, а затем, на экране навигатора, показывает number_format
версия для каждого случая (текст). Но я беспокоюсь, что на моем сервере они могут изменить конфигурацию, и вдруг PHP будет использовать ,
в качестве десятичного разделителя, смешивая вычисленные величины? Это возможно, или это гарантия того, что всегда научная запись .
как десятичные точки и не разделитель тысяч будет использоваться при расчете чисел? Я волнуюсь, потому что PHP не напечатан, поэтому «тип» number_format
это строка Должен ли я также бросить (float)
? Проведенные мною тесты в порядке, но я боюсь, что что-то может пойти не так.
Вы вправе беспокоиться, поэтому вы должны хранить числа в хранилище в их сыром виде, числовой формат, а не как форматированная строка. Вычисления должны выполняться на числовых значениях, а не на значениях, полученных в результате обратного проектирования строковых представлений.
Таким образом, хранить номер в DECIMAL
(или, что еще лучше, хранить значение в центах в INT
столбец), а затем отформатируйте число на ваш взгляд.
<?php echo '$'.number_format($price); ?>
Других решений пока нет …