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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Надеюсь на вашу поддержку, друзья!
О - давненько не было етой темы float & real VS decimal & numeric
...
Рейтинг: 0 / 0
mssql 2008r2. real в decimal
    #38662653
Фотография shut-up-and-skate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
обсудите победу.
Код: 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
mssql 2008r2. real в decimal
    #38662673
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
round(cast(@Value as decimal(15,6)), 2)
...
Рейтинг: 0 / 0
mssql 2008r2. real в decimal
    #38662747
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapPaNikпропущено...


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

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


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