Как получить результат float путем деления двух целочисленных значений?
Я хотел бы указать количество десятичных цифр, когда я делаю деление между 2 целыми числами, такими как:
select 1/3
, который в настоящее время возвращает 0
. Я хотел бы его вернуть 0,33
.
что-то типа:
select round(1/3, -2)
но это не сработает. Как я могу достичь желаемого результата?
8 ответов:
предложения от stb и xiowl прекрасны, если вы ищете константу. Если вам нужно использовать существующие поля или параметры, которые являются целыми числами, вы можете сначала привести их к плаванию:
SELECT CAST(1 AS float) / CAST(3 AS float)
или
SELECT CAST(MyIntField1 AS float) / CAST(MyIntField2 AS float)
потому что SQL Server выполняет целочисленное деление. Попробуйте это:
select 1 * 1.0 / 3
это полезно, когда вы проходите целых числа в качестве параметров.
select x * 1.0 / y
нет необходимости бросать их обоих. Тип данных результата для деления всегда один с более высоким тип данных приоритет. Таким образом, решение должно быть:
SELECT CAST(1 AS float) / 3
или
SELECT 1 / CAST(3 AS float)
может быть немного поздно, но понимают, что
CAST
наFLOAT
не допускается в MySQL и вызовет ошибку при попыткеCAST(1 AS float)
как говорится в MySQL dev.обходной путь к этому является простым в MySQL. Просто сделай
(1 + 0.0)
затем использовать
ROUND
для достижения определенного числа десятичных знаков, как это:ROUND((1+0.0)/(2+0.0), 3)
приведенный выше SQL делит 1 на 2 и возвращает float до 3 десятичных знаков, как в нем было бы
0.500
.
похоже, этот трюк работает в SQL Server и короче (на основе предыдущих ответов)
SELECT 1.0*MyInt1/MyInt2
или:
SELECT (1.0*MyInt1)/MyInt2