запросить и повторить число с плавающей запятой из базы данных

Это правильный способ показать число с плавающей запятой в базе данных MySQL?

if ($a == "balance") {
    $querys= "SELECT balance FROM users WHERE Username='$user'";
    $results=  mysql_query($querys);
    $rows = mysql_fetch_row($results);
    $bfloat = (float)$rows['balance']; 
    echo $bfloat;
}

в базе данных MySQL имя столбца balanace равно float, и, например, для текущего пользователя значение равно 1.73. Таким образом, его ответ будет 1,73.


person D.M.    schedule 30.06.2014    source источник
comment
Не используйте числа с плавающей запятой для работы с денежными значениями! floating-point-gui.de   -  person deceze♦    schedule 30.06.2014
comment
Что ж, расширение mysql устарело, и с этим нужно что-то делать. Кроме этого, в чем именно заключается ваш вопрос? Этот вопрос или этот может быть уместным здесь.   -  person Sverri M. Olsen    schedule 30.06.2014
comment
@SverriM.Olsen я пытаюсь получить сохраненную сумму в базе данных, которая имеет тип float, и, например, число с плавающей запятой равно 1.73   -  person D.M.    schedule 30.06.2014


Ответы (1)


Плохие новости. Ответ должен быть приблизительно 1,73. Для этого в типизированных языках используются отдельные десятичные типы (java BigDecimal). См. Десятичный тип в php для того же в PHP.

Плавающая точка аппроксимирует наше десятичное представление, для этого потребуется бесконечное количество цифр в двоичной системе (основание 2). Так же, как 2/7 по основанию 10, тогда как это 0,2 по основанию 7.

Также лучше приучить себя использовать подготовленные операторы http://xkcd.com/327/

person Joop Eggen    schedule 30.06.2014
comment
На типизированных языках...?! В отличие от PHP, который не имеет типов...?! - person deceze♦; 30.06.2014
comment
@deceze Ну, PHP слабо типизирован; один тип часто может использоваться как другой тип. Вероятно, он имел в виду строго типизированные языки. - person Sverri M. Olsen; 30.06.2014
comment
@Sverri Слабая типизация на самом деле не проблема. Что нужно знать перед обсуждение систем типов - person deceze♦; 30.06.2014
comment
Ах, у меня есть опыт работы с языками программирования, поэтому моя формулировка при наборе текста была плохой формулировкой. Не так давно наш довольно ужасный язык программирования даже стал работать лучше благодаря типам. Моя точка зрения: в PHP типы в основном появляются задним числом, приведением. Язык определенно не уделяет числам с фиксированной точкой должного внимания: учебные пособия, лучшие практики, профессиональные нормы. (Хорошо, BigDecimal в Java тоже уродлив.) - person Joop Eggen; 30.06.2014
comment
@deceze Ну, ты знаешь, о чем я говорю. Это делает его вещью. - person Sverri M. Olsen; 30.06.2014
comment
@Joop Вы все еще путаете наличие или отсутствие типов с динамической типизацией и статической типизацией. В PHP всегда были типы. Просто система типов PHP динамически преобразует типы на основе контекста и выводит типы из контекста. В отличие от явно статически типизированных языков, таких как Java. Это не означает, что в Java есть типы, а в PHP нет, или что система типов PHP является запоздалой мыслью. Правда, в PHP нет определенного типа для десятичных чисел. - person deceze♦; 30.06.2014
comment
@Sverri Слова, которые вы ищете, динамические и статические. :) - person deceze♦; 30.06.2014
comment
Я только что понял, что все еще можно легко начать дискуссию, поднимая системы типов в Интернете. Оставлю это пока... ;) - person deceze♦; 30.06.2014
comment
@deceze Я ценю немного технических разговоров, ваши замечания по делу. Но я боюсь, вопрос был о функции формата 2-десятичных знаков. И теперь отмечен как дубликат. - person Joop Eggen; 30.06.2014