point — Какой знак для десятичного разделителя использует PHP по умолчанию и его можно настроить?

я использую 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)? Проведенные мною тесты в порядке, но я боюсь, что что-то может пойти не так.

1

Решение

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

Таким образом, хранить номер в DECIMAL (или, что еще лучше, хранить значение в центах в INT столбец), а затем отформатируйте число на ваш взгляд.

<?php echo '$'.number_format($price); ?>
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]