Как я могу отключить экспоненциальную запись при выборе плавающего в MySQL? - PullRequest
8 голосов
/ 21 мая 2011

У меня есть столбец FLOAT, который содержит несколько очень маленьких чисел, таких как 0,00000000000234

Когда я выбираю их в MySQL, я возвращаю их обратно в экспоненциальной записи, такой как 2.34e-13. Можно ли как-нибудь изменить форматирование этих чисел, чтобы заставить MySQL возвращать его как 0,00000000000234?

В конечном итоге я хотел бы изменить отображение, а не базовое представление числа. Так что это, вероятно, будет настройка отображения или форматирования. В MySQL есть функция FORMAT (), но она не похожа на то, что я хочу (она помещает числа в формате, например, 123 456,78).

Ответы [ 3 ]

4 голосов
/ 01 августа 2014

Вы можете принудительно вернуть номер к желаемому формату отображения.Приведите его к достаточно большому значению DECIMAL, а затем приведите DECIMAL к CHAR, чтобы получить нужную вам форму отображения.Это чисто отображение и позволяет вам продолжать хранить числа с плавающей точкой в ​​mysql (если это необходимо).

mysql> SELECT CAST(CAST(f AS DECIMAL(14,14)) AS CHAR) AS example from test;
+------------------+
| example          |
+------------------+
| 0.00000000000234 |
+------------------+
1 row in set (0.00 sec)

Конечно, вы потеряете некоторую точность, в зависимости от значения.

2 голосов
/ 21 мая 2011

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

0 голосов
/ 12 марта 2013

Вы можете использовать раунд. т.е.

выберите раунд (столбец 10) из foo;

...