Lovedeep Singh Ответов: 2

Как мы можем хранить в "каком типе данных" только два числа после десятичной дроби и не округлять число в SQL


how can we store in 'which data type' only two num after decimal and not roundoff the num in sql 


Что я уже пробовал:

У меня есть данные num как 2.7777
мне нужно только два числа после десятичной дроби без округления
если я сохраняю это число в формате float или decimal то этот тип данных округляет число примерно до 2.78
желаемый выход-2,77

2 Ответов

Рейтинг:
1

CHill60

Вы ошибаетесь насчет поплавка.

Следующий фрагмент кода

create table test (a1 float, a2  decimal(15,2), a3  numeric(15,2), a4 real)
insert into test values (2.7777,2.7777,2.7777,2.7777)
select * from test
дает результаты
2.7777	2.78	2.78	2.7777
Но если я изменю определение a2 и a3
create table test2 (a1 float, a2  decimal(15,4), a3  numeric(15,4), a4 real)
insert into test2 values (2.7777,2.7777,2.7777,2.7777)
select * from test2
дает
2.7777	2.7777	2.7777	2.7777
Чтобы получить желаемый результат 2.77 то вы можете использовать КРУГЛЫЙ [^] заставляя его усечь. Сравните эти результаты с
select round(a1, 2), round(a1, 2, 1), round(a2, 2), round(a2, 2, 1), round(a3, 2), round(a3, 2, 1), round(a4, 2), round(a4, 2, 1) from test2 
что дает результаты (я добавил вертикальные полосы, чтобы было легче видеть каждый столбец
2.78	2.77 |	2.7800	2.7700 | 2.7800	2.7700	| 2.78	2.77
Однако вы действительно должны делать усечение в своем слое презентации.

Таким образом, храните свои данные в столбце типа float, decimal (с достаточным количеством цифр справа от десятичной точки, определенной), numeric (комментарий как для десятичной дроби) или real и либо усеките его в пользовательском интерфейсе, либо используйте
ROUND(yourColumnName, 2, 1)


Рейтинг:
1

Ravi Gaur 11

использовать тип данных десятичная дробь(18, 2)

напр..

declare @dig decimal(18, 2) = 2.7777
    select @dig


вернуть
2.77


CHill60

Неправильный. Если я запускаю ваш код то получаю результат 2.78 что является полной противоположностью тому, что хотела ОП. Я продемонстрировал это в своем решении.