Какой правильный формат использовать в PHP для обозначения & quot; денег & quot; атрибут получен из базы данных MySQL?

Я использую функцию «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, кажется, не знает;

0

Решение

Причина в том, что моя программа также выполняет арифметические операции с 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 долларов США с ошибкой преобразования типов.

2

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

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

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