Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.04.15;
Скачать: [xml.tar.bz2];

Вниз

Ошибочный результат ХП   Найти похожие ветки 

 
Juice ©   (2007-01-10 21:27) [0]

CREATE PROCEDURE GETACTSUBJECTS
RETURNS (
   PRICEFOR1 NUMERIC(15,5)
AS
begin
    ...
    pricefor1=509040.0000/28000.0000;
    suspend;
end^


в результате возвращается 18,17999 :)

Как такое может быть !? Прошелся отладчиком - резултат 18.18, просто запуская получаем такую ерунду.

Диалект1, FB 1.03


 
try ©   (2007-01-10 21:49) [1]

Странно, калькулятор тоже показывает 18.18, что равно 18.17(9)
:)))))


 
Anatoly Podgoretsky ©   (2007-01-10 21:52) [2]

> try  (10.01.2007 21:49:01)  [1]

Чего странного, у калькулятора числа с фиксированой запятой, а у автора с плавающей.


 
try ©   (2007-01-10 22:16) [3]


> Anatoly Podgoretsky ©   (10.01.07 21:52) [2]
> Чего странного


Что показывает, как отладчик. Там, в посте [1], ещё смайл стоит.


 
Juice ©   (2007-01-18 09:51) [4]

Обьясните тупому, почему оно таки так и что сделать чтобы был правильный результат?


 
Juice ©   (2007-01-18 09:54) [5]

Ведь делится нацело, без периода, почему такое получается?


 
ЮЮ ©   (2007-01-18 09:56) [6]

1) использовать более "точные" типы для вщественных чисел, нежли NUMERIC(15,5).
Результаты для Double и Single в Delphi тоже часто "различаются".  
2) использовать в операциях переменные, а не константы, тип которых определен неявно


 
Juice ©   (2007-01-18 10:22) [7]


> ЮЮ ©   (18.01.07 09:56) [6]

2) у меня NUMERIC(15,5)/NUMERIC(15,5)
1) а что точнее ?


 
Johnmen   (2007-01-18 13:46) [8]

Точнее нет.
Читать тут http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374


 
Juice ©   (2007-01-26 18:40) [9]

Я не успокоился. Numeric3 := numeric1/numeric2, везде точные типы, откуда фигня всплывает ? По всем законам логики numeric3 должна быть приведена к пятому знаку, даже если бы вместо numeric1 и numeric2 были бы числа с плавающей точкой. Ведь в шестом разряде 509040.0000/28000.0000 = 18,17999 однозначно тоже девятка стоит. В Delphi с currency обстоит так да и везде должно быть так.


 
Juice ©   (2007-01-26 19:09) [10]

Вот хороший пример :


SET TERM ^ ;

CREATE PROCEDURE TEST
RETURNS (
   RESULT5 NUMERIC(15,5),
   RESULT4 NUMERIC(15,4))
AS
DECLARE VARIABLE X NUMERIC(15,5);
DECLARE VARIABLE Y NUMERIC(15,5);
begin
 x = 509040;
 y = 28000;
 result4 = x/y;
 result5 = x/y;
 suspend;
end^

SET TERM ; ^


Возвращает Result5=18,17999, Result4 = 18,18
Почему число с точностью 4 приводится а с пять нет ?????????????!!!!!!!!! Для меня это большая проблема,


 
Juice ©   (2007-01-26 19:29) [11]

Попробуйте изменять RESULT4 от NUMERIC(15,2)) и вверх - (15,3),(15,4),(15,6), (15,7), (15,8) ... Неверный результат выдает только на (15,5) !!! А не бага ли это ? :)


 
Johnmen ©   (2007-01-26 22:05) [12]

Рекомендую почитать документацию на предмет спецификации типов, их применимости и особенностей.


 
Juice ©   (2007-01-29 11:29) [13]

Прочитал DataDef, LangRef, Releasenotes Firebird"a - ничего такого там нет. Какую документацию конкретно мне следует почитать ?



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2007.04.15;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.04 c
15-1174469659
Vaitek__
2007-03-21 12:34
2007.04.15
Фотопаечать на Дому и СНПЧ


2-1174988682
skye
2007-03-27 13:44
2007.04.15
Как вставить анимированную гифку в форму


15-1174502449
Knight
2007-03-21 21:40
2007.04.15
Motorola c350&#133


2-1175002596
Tor
2007-03-27 17:36
2007.04.15
Grid или DBGrid


2-1174906877
Roman_S
2007-03-26 15:01
2007.04.15
?????????? вместо Копировать





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский