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

Я объявил переменную @avgMis как десятичную (2,2) в SQL Server. Затем я попытался разделить два целых числа, ожидая десятичного значения. Вместо этого мой ответ 0,00.

Как разделить @avgMis = (1/(1+2+1)) для получения 0,25 в SQL Server?

select 1.0/(1+2+1); или select 1/(1.0+2+1);
Luuk 22.04.2022 21:27

В вашем делении числители и знаменатели были целыми числами. когда мы делим целое число 1 на целое число 4, результат равен 0, который в вашем случае был сохранен в @avgMis, поэтому стал 0,00. Чтобы избежать целочисленного деления, добавьте умножение, скажем, на 1,00 демо

DhruvJoshi 22.04.2022 21:39

Разве ваш результат не может быть равен 1 или числитель всегда меньше знаменателя?

shawnt00 22.04.2022 21:52

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

Aaron Bertrand 22.04.2022 22:12
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
3
4
47
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

отлить как десятичный

DECLARE @x INT = 10, @y INT = 3, @z decimal(6,2)
SELECT @z = CAST(@x AS decimal(8,4))/CAST(@y AS DECIMAL(8,4))
SELECT @z

результат будет 3,33

в твоей ситуации

SELECT CAST( CAST(1 AS DECIMAL(6,2))/CAST((1+2+1) AS DECIMAL(6,2)) AS DECIMAL(6,2)) AS result

enter image description here

Я также обнаружил, что при использовании реальных десятичных знаков в моих входных значениях возвращаемый результат также является десятичным, т. Е. Выберите 1,0/(1 + 2 + 1); или выберите 1/(1,0+2+1);

Johnny 28.04.2022 14:09

Другие вопросы по теме