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

Вниз

Округление? Round() кто как делает?   Найти похожие ветки 

 
Vadim S   (2003-10-23 12:10) [0]

Как оптимально решить проблему округления.
У меня D5
пишет , что Round(4.5)=4;
вернее Round(36*12.5/100)=4;
хотя должно быть 5!.


 
Anatoly Podgoretsky   (2003-10-23 12:21) [1]

Это ты решил, что должно быть 5, тогда делай свою реализацию функции.


 
Vadim S   (2003-10-23 12:41) [2]

Разве нет?
Excel тоже так думает.


 
Юрий Зотов   (2003-10-23 12:45) [3]

> Vadim S (23.10.03 12:10)

Читайте сначала здесь:
http://www.delphikingdom.ru/helloworld/reals.htm
а потом про так наз. "бухгалтерское округление".


 
_Narayan_   (2003-10-23 12:48) [4]

Как это не странно, но мой калькулятор тоже думает что 4.5


 
Vorobyev Sergey   (2003-10-23 12:52) [5]

round(4.5)=4
round(5.5)=6
round(6.5)=6
round(7.5)=8

в хелпе по Round написано, что он округляет результат всегда до четного значения

А вообще про такие "чудеса" и фокусы можно прочитать здесь
http://www.delphikingdom.ru/helloworld/miracles.htm


 
Vorobyev Sergey   (2003-10-23 12:54) [6]


> в хелпе по Round написано, что он округляет результат всегда
> до четного значения

поправка: .. если число "половинное"


 
icWasya   (2003-10-23 13:04) [7]

из документации по 08xx87
режимы округления -
к нулю
к плюс бесконечности
к минус бесконечности
к чётному -- ???


 
Александр из Минска   (2003-10-23 16:52) [8]

ЕСТЬ СУПЕР ЮНИТ Math, в котором есть функция ( да там просто куча олезных функций) RoundTO
Найди файл dlx1clx.hlp и найди там модуль Math, а потом уже найдешь все его возможности и описание на эту функцию!!!


 
Александр из Минска   (2003-10-23 16:57) [9]

У кого хелпа нету:
Rounds a floating-point value to a specified digit or power of ten using “Banker’s rounding”.

Unit

Math

Category

Arithmetic routines

type TRoundToRange = -37..37;
function RoundTo(const AValue: Double; const ADigit: TRoundToRange): Double;

Description

Call RoundTo to round AValue to a specified power of ten.

AValue is the value to round.

ADigit indicates the power of ten to which you want AValue rounded. It can be any value from –
37 to 37 (inclusive).

RoundTo uses “Banker’s Rounding” to determine how to round values that are exactly midway between the two values that have the desired number of significant digits. This method rounds to an even number in the case that AValue is not nearer to either value.

The following examples illustrate the use of RoundTo:

Expression Value

RoundTo(1234567, 3) 1234000
RoundTo(1.234, -2) 1.23
RoundTo(1.235, -2) 1.24
RoundTo(1.245, -2) 1.24

Note: The behavior of RoundTo can be affected by the Set8087CW procedure or SetRoundMode function.


 
Александр из Минска   (2003-10-23 16:58) [10]

Пардон! Это вашу проблему никак не решает:(((


 
Александр из Минска   (2003-10-23 17:01) [11]

Еще раз извиняюсь, но у меня все в норме (не так как в хелпе) RoundTo(1234567, 3) = 1235000
Там еще что-то настраивать надо...


 
}{enon   (2003-10-23 17:19) [12]

Можно попробовать так:
RoundValue := Trunc(Value+0.5);
Результат получается такой, как требуется.


 
Vadim S   (2003-10-31 12:15) [13]

А еще есть функция
function Ceil(X: Extended):Integer;

так у нее вроде тоже все правильно.


 
sniknik   (2003-10-31 12:36) [14]

можно так
Set8087CW($1B72); //математическое округление
Round(X);
Set8087CW($1372); //вернуть взад, а то бухгалтер удавится :о))


 
Anatoly Podgoretsky   (2003-10-31 12:44) [15]

}{enon © (23.10.03 17:19) [12]
Нука округли -0.7



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

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

Наверх




Память: 0.47 MB
Время: 0.037 c
1-41458
MixerPro
2003-10-29 11:14
2003.11.13
Как передавать переменные программе при запуске?


1-41598
DimChan
2003-10-27 07:21
2003.11.13
Массивы


1-41641
Ig
2003-10-25 23:01
2003.11.13
Sender или как сделать это


1-41625
SkyRanger
2003-10-26 11:40
2003.11.13
Динамические массивы


14-42065
VEG
2003-10-17 17:34
2003.11.13
Что для вас является самым ценным в компьютере?





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