Как вы округляете числа с плавающей точкой условно?

#mysql #sql

#mysql #sql

Вопрос:

Я пишу запрос, который используется программным обеспечением для создания отчетов.

Часть этого запрашивает часы, необходимые для завершения проекта. Мы записываем это значение с плавающей запятой в 2 после запятой, чтобы мы могли оценить с точностью до четверти часа.

Однако, если мы используем его в нашем отчете, и час, который мы записали, составляет что-то вроде 8.00, я хочу запросить его и отформатировать так, чтобы 8.00 было просто 8. Однако любые часы с чем-то большим, чем десятичное число, например 8.25, должны оставаться равными 8.25. Как я могу заставить это работать?

 hours                     Queried Result
======    -> My Query ->  ==============
8.00                      8
8.25                      8.25
  

Я использую MySQL 5.6

Комментарии:

1. Как должно 8.5 быть возвращено?

2. 8.50 — это нормально. Все это хранится как decimal(11,2) типы, поэтому все, кроме целых чисел, может быть просто как есть.

3. В вопросе говорится, что это число с плавающей запятой, а не десятичное. Это не одно и то же.

Ответ №1:

Вы можете использовать REPLACE() функцию для удаления .00 :

 REPLACE(hours, '.00', '') AS hours
  

Ответ №2:

Вы можете преобразовать его в строку и проверить самые правые 2 символа и обрезать их, если они равны ’00’.

  SELECT TRIM(TRAILING '.00' FROM CAST(column_name AS VARCHAR));
  

Ответ №3:

ВЫБЕРИТЕ REPLACE(Round(8.00), ‘.00’, ‘ ‘);

Я приведу больше примеров, чтобы вы могли прояснить свою логику:

MySQL ROUND() округляет число, указанное в качестве аргумента, до числа, указанного в качестве другого аргумента.

Синтаксис:

ROUND(N,[D]);

Где ‘N’ округляется до D знаков после запятой. и ‘D’ указывает, до скольких знаков после запятой N будет округлено.

Пример 1:-

 SELECT ROUND(4.43);
  

Вывод :-

  4
  

Приведенный выше оператор MySQL округлит заданное число 4.43. Десятичные знаки не определены, поэтому десятичное значение по умолчанию равно 0.

Пример 2:-

 SELECT ROUND(-4.53);
  

Вывод:-

 -5
  

Приведенный выше оператор MySQL округлит заданное число -4.53. Десятичные знаки не определены, поэтому десятичное значение по умолчанию равно 0.