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

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

Просветите по округлению


pavelnk ©   (2015-09-09 18:24:00) 

Просветите пожалуйста, вообще не понимаю - http://s013.radikal.ru/i322/1509/1b/08352d7dc99e.png

Т.е. Format('%1.2f',[14.14666666])=14.13 Почему? Это не похоже даже на математическое округление.


  (2015-10-20 17:59:00) [1]

Удалено модератором


SergP   (2015-09-10 20:51:00) [2]


>
> Начали пользоваться бухгалтеры, выписали мне пол кило
> звездюлей


в том, чем должны пользоваться бухгалтеры поменьше используй типы с плавающей точкой... для большинства "бухгалтерских чисел" лучше подходит currency.


icWasya   (2015-09-10 10:53:00) [3]

Вообще то
procedure TForm3.Button1Click(Sender: TObject);
var
 ud273m,ud273mit,stud273m:Single;
begin

 ud273m:= 14.14666666;
 stud273m:=55;
 ud273mit:=  stud273m*ud273m;
 Edit1.Text:= Format('%1.2f',[ud273m])+'*'+Format('%1.2f',[stud273m])+'='+Format('%1.2f',[ud273mit]);
end;

получается
14,15*55,00=778,07

А вот если
procedure TForm3.Button1Click(Sender: TObject);
var
 ud273m,ud273mit,stud273m:Single;
begin

 ud273m:= 42.4/3;
 stud273m:=55;
 ud273mit:=  stud273m*ud273m;
 Edit1.Text:= Format('%1.2f',[ud273m])+'*'+Format('%1.2f',[stud273m])+'='+Format('%1.2f',[ud273mit]);
end;

то 14,13*55,00=777,33
Так что отладчик


Rouse_   (2015-09-10 10:02:00) [4]


> Ну что значит не знают, есть же вполне конкретные правила
> округления, например Математическое округление. Я думал
> что если пишу Format('%1.2f') То второй знак после запятой
> увеличивается на единицу, например.

с какого это перепугу?


> Начали пользоваться бухгалтеры, выписали мне пол кило звездюлей

Ты сам ответил на свой вопрос


pavelnk   (2015-09-10 05:56:00) [5]

Удалено модератором


Германн   (2015-09-10 01:01:00) [6]

Удалено модератором


Rouse_   (2015-09-09 20:40:00) [7]


> pavelnk ©   (09.09.15 20:21) [4]
> > Rouse_ ©   (09.09.15 19:19) [1]
> Спасибо, посмотрю. Вообще это для меня открытие, что стандартные
> функции врут.

На округлении - конечно врут, они же не знают что именно тебе нужно, поэтому дают нечно средне взвешенное.


pavelnk   (2015-09-09 20:21:00) [8]

> Rouse_ ©   (09.09.15 19:19) [1]
Спасибо, посмотрю. Вообще это для меня открытие, что стандартные функции врут.


pavelnk   (2015-09-09 20:19:00) [9]

RAD 2010. Ничего себе глюк. Я думал это какой то хитрый алгоритм округления.


кгшзх   (2015-09-09 20:12:00) [10]

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


Rouse_   (2015-09-09 19:19:00) [11]

http://rouse.drkb.ru/other.php#round


Наверх

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