2015-08-24 5 views
0
select 10/2 

Выход: 5SQL Server Management Studio: высокоточные ошибки

Select 2/10 

Выход: 0

Select Convert(numeric(2,2),2/10) 

Выход: 0,00

Select 10*(Convert(numeric(2,2),2/10)) 

Выход: 0,00

Select 10*(2/10) 

Выход: 0

Почему несовершенна выход?

Работает ли арифметическая функция (Разделить)?

+0

Это не ошибка *** *** - это точно ** что задокументировано - вы используете ** целочисленное деление ** и '2/10' в целочисленном делении ** - ** 0 - нет вопрос, какой тип вывода вы определяете (это применяется только * после * операции) .... –

+0

Спасибо. Я понятия не имел о целочисленном делении здесь. Теперь мне кажется, что это прекрасно. Еще раз спасибо. –

ответ

1

Когда вы разделите int и int, вы получаете int. По этой причине вам необходимо разделить int и float, следовательно select 10/2.0.

Когда вы конвертируете в numeric, вы конвертируете результат - так что вы получаете 0.00.

По этой причине 2/100. Вы должны преобразовать его перед делением или добавить десятичную часть, например .0

Существует аналогичный question.

Смежные вопросы