Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / mssql 2008r2. real в decimal / 20 сообщений из 20, страница 1 из 1
05.06.2014, 12:49
    #38662457
shut-up-and-skate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mssql 2008r2. real в decimal
привет. есть ли возможность конвертнуть real в decimal(15,6) без потери точности.

т.е. например real мы видим как 100,025. Реал в децимал будет виден как 100,024999 например. потеря составляет 0,000001. промежуточную конвертацию в varchar не предлагать.
...
Рейтинг: 0 / 0
05.06.2014, 13:05
    #38662472
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mssql 2008r2. real в decimal
Вся точность была потеряна при помещении значения в real.
...
Рейтинг: 0 / 0
05.06.2014, 13:06
    #38662473
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mssql 2008r2. real в decimal
shut-up-and-skate,

если вы видите real как 100,025, а при преобразовании в decimal с достаточным количеством знаков получаете иное, это означает что происходит не потеря точности, а то, что в real хранилось некое приближенное к 100,025 значение и при выводе оно округлялось. real - неточный тип данных. то есть вам нужно дополнительно округлить decimal для достижения того же результата. либо через строку
...
Рейтинг: 0 / 0
05.06.2014, 13:09
    #38662477
shut-up-and-skate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mssql 2008r2. real в decimal
спасибо за ответы мужики. насчет того что хранится реал в приближенном виде это понятно. тогда другой вопрос, как при селекте в студии я вижу то что нужно? ну т.е. делаю селект поля типа real и все нормально он показывает. там алгоритм нужно использовать чтоб увидеть это число таким каким его записали изначально?

з.ы. извеняюсь если непонятно выразился
...
Рейтинг: 0 / 0
05.06.2014, 13:10
    #38662478
shut-up-and-skate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mssql 2008r2. real в decimal
Shakill,

что значит через строку?
...
Рейтинг: 0 / 0
05.06.2014, 13:11
    #38662482
shut-up-and-skate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mssql 2008r2. real в decimal
shut-up-and-skateShakill,

что значит через строку?если про промежуточную конвертацию через варчар то не взлетит. примерно в 1% случаев он возвращает совершенно другое значение с разницей вплоть до 0,05
...
Рейтинг: 0 / 0
05.06.2014, 13:12
    #38662483
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mssql 2008r2. real в decimal
shut-up-and-skateспасибо за ответы мужики. насчет того что хранится реал в приближенном виде это понятно. тогда другой вопрос, как при селекте в студии я вижу то что нужно? ну т.е. делаю селект поля типа real и все нормально он показывает. там алгоритм нужно использовать чтоб увидеть это число таким каким его записали изначально?

з.ы. извеняюсь если непонятно выразилсяКлиентские утилиты округляют при отображении. Поэтому вы видите более-менее "круглое" значение. Промежуточное преобразование в varchar делает то же самое, кстати.
...
Рейтинг: 0 / 0
05.06.2014, 13:14
    #38662488
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mssql 2008r2. real в decimal
shut-up-and-skateshut-up-and-skateShakill,

что значит через строку?если про промежуточную конвертацию через варчар то не взлетит. примерно в 1% случаев он возвращает совершенно другое значение с разницей вплоть до 0,05
попробуйте тогда преобразовывать real в decimal(15, 7) и затем округлять до шестого знака
...
Рейтинг: 0 / 0
05.06.2014, 13:16
    #38662492
shut-up-and-skate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mssql 2008r2. real в decimal
Shakill,

ок. попробую.
...
Рейтинг: 0 / 0
05.06.2014, 13:39
    #38662521
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mssql 2008r2. real в decimal
Shakillshut-up-and-skate,

если вы видите real как 100,025, а при преобразовании в decimal с достаточным количеством знаков получаете иное, это означает что происходит не потеря точности, а то, что в real хранилось некое приближенное к 100,025 значение и при выводе оно округлялось. real - неточный тип данных. то есть вам нужно дополнительно округлить decimal для достижения того же результата. либо через строкуreal - точный тип.
Просто мы на практике никогда не видим его полное истинное значение.
Которое не обязательно равно вставляемому значению с точностью до бита.
...
Рейтинг: 0 / 0
05.06.2014, 13:51
    #38662546
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mssql 2008r2. real в decimal
iapreal - точный тип.
Просто мы на практике никогда не видим его полное истинное значение.
Которое не обязательно равно вставляемому значению с точностью до бита.неужели надо уточнять что он неточный применительно к хранению десятичных чисел
...
Рейтинг: 0 / 0
05.06.2014, 13:56
    #38662556
PaNik
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mssql 2008r2. real в decimal
iapreal - точный тип.
...

Microsoft с вами не согласен
...
Рейтинг: 0 / 0
05.06.2014, 14:05
    #38662564
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mssql 2008r2. real в decimal
PaNikiapreal - точный тип.
...

Microsoft с вами не согласенНачинаем дело "iap против Микрософта"!

Надеюсь на вашу поддержку, друзья!
...
Рейтинг: 0 / 0
05.06.2014, 14:10
    #38662573
shut-up-and-skate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mssql 2008r2. real в decimal
PaNikiapreal - точный тип.
...

Microsoft с вами не согласенспасибо что ткнул носом в решение. вот я тупой мужики... делал каст в варчар. а нужно было использовать str. победа.
...
Рейтинг: 0 / 0
05.06.2014, 14:11
    #38662574
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mssql 2008r2. real в decimal
оффтопiapНачинаем дело "iap против Микрософта"!
Надеюсь на вашу поддержку, друзья!

так вы не первый. тут уже есть как минимум люди, несогласные с синтаксисом команды бэкап, несогласные с офф. переводом и т.д. =)
...
Рейтинг: 0 / 0
05.06.2014, 14:13
    #38662577
shut-up-and-skate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mssql 2008r2. real в decimal
shut-up-and-skate победа .для кого-то беда что такие спецы как я занимаются разработкой :)
...
Рейтинг: 0 / 0
05.06.2014, 14:25
    #38662595
Maxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mssql 2008r2. real в decimal
iapНачинаем дело "iap против Микрософта"!

Надеюсь на вашу поддержку, друзья!
О - давненько не было етой темы float & real VS decimal & numeric
...
Рейтинг: 0 / 0
05.06.2014, 14:52
    #38662653
shut-up-and-skate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mssql 2008r2. real в decimal
обсудите победу.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
declare @Value real = 44555.87

select @Value,
    cast(@Value as decimal(15,6)) as ValueDec,
    cast(left(convert(varchar,@Value,1),9) as decimal(15,6)) -- автоокругление до 6 знаков
      *cast(case cast(right(convert(varchar,@Value,1),1) as int)
                when 1 then 10
                when 2 then 100
                when 3 then 1000
                when 4 then 10000
                when 5 then 100000
                when 6 then 1000000
                when 7 then 10000000
                when 8 then 100000000
            end as decimal(15,6)) as ValueDecStrong
...
Рейтинг: 0 / 0
05.06.2014, 15:01
    #38662673
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mssql 2008r2. real в decimal
Код: sql
1.
round(cast(@Value as decimal(15,6)), 2)
...
Рейтинг: 0 / 0
05.06.2014, 16:14
    #38662747
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mssql 2008r2. real в decimal
iapPaNikпропущено...


Microsoft с вами не согласенНачинаем дело "iap против Микрософта"!

Надеюсь на вашу поддержку, друзья!
Просто все как всегда цитируют части определения
А определение нужно читать целиком
"Данные с плавающей запятой являются приблизительными, поэтому не все значения из диапазона могут быть отображены точно. Синониму real соответствует в ISO тип float(24)."
Т.е. данные приблизительные. Но не потому, что они каждый раз разные, а потому что "не все значения могут быть отображены "
Т.е. для тех, кто столкнулся с отображением данных, этот тип данных неточный.
А для тех, кто совершает вычисления, этот тип данных очень даже точный
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / mssql 2008r2. real в decimal / 20 сообщений из 20, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]