Я использую функцию «number_format», чтобы обозначить Деньги«атрибут в PHP / MySQL.
Сам атрибут хранится в моей базе данных.
Select account_balance from my_table where login = 'xxxxxx';
$correct_account_balance = number_format($account_balance,
['my_balance'],2); }
Другими словами: обозначение2«добавит два дополнительных числа после десятичной точки, как показано ниже: 10,00 (например)
Этот код работает нормально ………… за исключением одной небольшой проблемы: если сумма после десятичной точки имеет ноль в конце, она не отображается!
Например: если сумма, скажем, 10 долларов и 35 центов, он отображает правильно: 10,35
Однако, если сумма составляет 10 долларов и 30 центов, она отображается как: 10,3 (вместо : 10,30 )
Причина в том, что моя программа также выполняет арифметические операции с account_balance ПОСЛЕ того, как я преобразовал ее с помощью функции «number_format».
Например :
$correct_account_balance -= 0.25 (this will subtract 0.25 each time the program is executed)
Вот почему в любое времянуль«в конце фактической суммы (например, 10.30) она отображается как: 10,3
Есть ли способ обойти это? Google, кажется, не знает;
Причина в том, что моя программа также выполняет арифметические операции с account_balance ПОСЛЕ того, как я преобразовал ее с помощью функции «number_format».
Вам нужно будет повторно запустить number_format
после выполнения операций на нем.
Вы действительно не должны запускать его вообще, пока он не будет готов к отображению, запятые, которые он добавляет к большим числам, будут очень испортить ваши расчеты. В качестве примера приведем следующее:
<?php
$number = 100000.30;
$number = number_format($number, 2);
$number -= 0.25;
echo number_format($number, 2);
результаты на выходе:
99.75
Это означает, что вы только что украли у ваших клиентов 99 900,55 долларов США с ошибкой преобразования типов.
Других решений пока нет …