Округление до двух цифр в SQL Server 2008 - PullRequest
3 голосов
/ 31 марта 2011

достаточно округлить значение столбца в plsql, используя round(value,2). Например, 1.2222 можно преобразовать в 1.22 с помощью этой функции в plsql.

Как я могу сделать это в SQL Server? Когда я использую round(1.2222,2), он конвертирует 1.2200. Я хочу 1,22. Спасибо за помощь

Ответы [ 2 ]

5 голосов
/ 31 марта 2011

Математически, 1.2200 и 1.22 - это одно и то же число.

Отображение числа на самом деле является строкой, которая отличается от физического содержимого числа, поэтому число округляется в SQL Server одинаково.и Oracle, это просто отображается по-разному.

Более того, о типах с плавающей запятой в SQL: если вы объявите переменную как имеющую s десятичные разряды, она всегда будет отображаться как имеющая s десятичные разряды, независимо от значения, например

declare @x decimal(10,6)
declare @y decimal(10,2)
set @x =3
set @y=@x -- identical to set @y=cast(@x as decimal(10,2))

select @x -- selects 3.000000
select @y -- selects 3.00

select 'The number is ' + cast(@x as varchar) -- selects 'The number is 3.000000'
select 'The number is ' + cast(@y as varchar) -- selects 'The number is 3.00'

Однако существует техническая разница в значении 3,00 и 3,0000, и это относительная ошибка числа.Поскольку все действительные числа округлены, 3,00 фактически означает 3 +/- 0,005, а 3,0000 - фактически 3 +/- 0,00005, поскольку известны более значимые цифры.

0 голосов
/ 12 июля 2013

десятичный (10,4) и десятичный (10,2) два разных типа. поэтому 25.55 и 25.5555 - это разные типы. но если вы используете float (4), то эти два числа имеют одинаковые типы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...