Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Округление в Дельфе


Извращенец ©   (2006-09-11 13:21:00) 

Добрый день! Наткнулся на проблему - внешне безобидная строка:
FormatFloat('0.0000',9.33335) на моем компе возвращает 9.3334, а у юзеров - 9.3333! Т.е. не округляет 5 до целого... почему может быть такое?


evvcom   (2006-09-12 10:07:00) [1]

> [8] Rater1   (12.09.06 09:32)

Правила разные бывают. То, о чем ты - банковское округление. См. SetRoundMode function.


Rater1   (2006-09-12 09:32:00) [2]

Разрядность подбирается экпериментально :-)
просто часто число 9.33335  реально представлено как 9.3333499999999

да и по правилам округления
FormatFloat('0.0000',9.3333499+0.0000001) = 9.3333

правила: http://do.rksi.ru/library/courses/chm/ch01s03.dbk


evvcom   (2006-09-12 09:17:00) [3]

> [6] Rater1   (12.09.06 09:13)

А если
FormatFloat('0.0000',9.3333499+0.0000001) ? :)


Rater1   (2006-09-12 09:13:00) [4]

А если так:
FormatFloat('0.0000',9.33335+0.0000001) ?


MacroDenS   (2006-09-11 16:23:00) [5]

а если использовать ф-цию RoundTo из модуля Math?


guav   (2006-09-11 15:13:00) [6]

Coprocessor Conrtol Word разный. Некоторые функции winapi меняют его, его можно восстанавливать из Default8087CW.
см SetPrecisionMode , Set8087CW , Default8087CW.


icWasya   (2006-09-11 15:08:00) [7]

а вот ещё
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1217


balepa   (2006-09-11 14:21:00) [8]

Извращенец   (11.09.06 13:21)
У юзеров и у тебя какая винда?


PSPF2003   (2006-09-11 13:28:00) [9]

FormatFloat('0.0',9.33335)?


Наверх

Титульная страница Поиск, карта сайта Написать письмо