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

Вниз

Ошибка округления Trunc   Найти похожие ветки 

 
_Даня   (2007-08-17 14:33) [0]

Не первый раз отлавливаю ошибку округления Trunc, например:
Trunc(Form.Query1.FieldByName("Y").AsFloat * 100)
При открытом НД возвращает 43068, хотя в базе хранится значение 430.69
С базой это не связано, тоже самое происходит и со строковыми преобразованиями. Прямой вызов Trunc(43069.0) дает правильный результат. Ошибка стойкая, разница всегда либо 1, либо -1 (на разных сочетаниях последних двух цифр). Дополнительной проверкой можно это дело пресечь, но хотелось бы докопаться до причины. Никто не сталкивался? Спасибо, кто откликнется.


 
Сергей М. ©   (2007-08-17 14:37) [1]


> Ошибка стойкая, разница всегда либо 1, либо -1


см.  SetRoundMode


 
MBo ©   (2007-08-17 14:45) [2]

430.69 * 100 < 43069 ввиду ограниченной точности представления чисел с плавающей запятой, так что никакой ошибки Trunc здесь нет
http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=374


 
Плохиш ©   (2007-08-17 15:01) [3]


> Не первый раз отлавливаю ошибку округления Trunc

Вообще-то trunc - это не округление, а обрезание того, что после запятой. А округление в пасклале и делфи всегда кликалось round.


 
_Даня   (2007-08-17 15:29) [4]


> Плохиш ©   (17.08.07 15:01) [3]
> trunc - это не округление

Извиняюсь - оговорился.

> MBo ©   (17.08.07 14:45) [2]

Спасибо, очень интересная статья - проглядел, но надо посидеть, почитать внимательно и вдумчиво.

Но пока практический результат получить не удалось: SetRoundMode=rmUp дает правильный результат для положительных значений, очевидно rmDown (не проверял) - для отрицательных. Читаемые значения могут быть как положительными, так и отрицательными. Правильно ли я понимаю, что без дополнительной проверки  получить правильно целочисленный результат из вещественного аргумента нельзя или есть другие способы? round и int как я понимаю работают аналогично trunc.


 
Плохиш ©   (2007-08-17 15:40) [5]


> round и int как я понимаю работают аналогично trunc.

К счастью фирму борланд незаботит чьё-то понимание и они описали работу этих функций в справке...


 
_Даня   (2007-08-17 15:44) [6]


> Плохиш ©   (17.08.07 15:40) [5]
> > round и int как я понимаю работают аналогично trunc.К
> счастью фирму борланд незаботит чьё-то понимание и они описали
> работу этих функций в справке...

аналогично в свете статьи :  http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=374
не буквально же



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

Форум: "Основная";
Текущий архив: 2007.10.28;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.041 c
15-1191366240
ERGef
2007-10-03 03:04
2007.10.28
Sun ONE Studio ME как создать jar и jad файлы??


15-1190802582
em240
2007-09-26 14:29
2007.10.28
C#+icq


1-1186721899
Ануфрий
2007-08-10 08:58
2007.10.28
Обновление программы динамически через интернет


2-1191743251
мфтнф_й
2007-10-07 11:47
2007.10.28
TCustomListBox -- OnDblClick


6-1172476821
Empleado
2007-02-26 11:00
2007.10.28
Общий вопрос по структуре программы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский