![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Округление в Дельфе
Извращенец © (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)?