Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 12.05.2012
Сообщений: 8

Непонятное округление чисел

12.05.2012, 19:41. Показов 2755. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, люди!
Столкнулся с проблемой. Хочу выяснить причину. Происходит такая фигня - вводятся несколько чисел (0..1) в цикле и вычисляется, сколько до 0 осталось. Так вот, при вычислении последнего остатка вместо 0 выдается число что-то типа -2,45451Е-17.
Причем, все числа я ввожу нормальные, к примеру, 0,4;0,5;0,1.
Вот кусок кода:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
rep5:
ost:=1; temp:=0;
for i:=1 to Round(KolI) do begin
  rep4:
  if i=Round(KolI) then temp:=ost;
  buf:=strtofloat(inputbox('StatWorks - Ââîä ÷àñòîñòåé',
        'Ââåäèòå ÷àñòîñòü íà '+inttostr(i)+'-îì èíòåðâàëå.'+#13#10+
        'Îñòàëîñü äî 1 - '+floattostr(ost)+'.', floattostr(temp)));
  if (buf>=0) and (buf<=1) then q[i]:=buf else goto rep4; 
  if ((ost-q[i])>=0) and ((ost-q[i])<=1) then ost:=ost-q[i]
    else goto rep4;
end;
if ost<>0 then begin MessageBox(Handle,'Ââåäåííûå ÷àñòîòû â ñóììå íå ñîñòàâëÿþò 1.'+#13#10+
        'Ïîâòîðèòå ââîä.',Version, MB_ICONWARNING); goto rep5; end;
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.05.2012, 19:41
Ответы с готовыми решениями:

Округление чисел
Здравствуйте, не могу понять как округляются числа в DELPHI В общем мне нужно число в edit1 округлить Trunc вот мой код, в чем...

Округление чисел
Доброго времени суток. Подскажите пожалуйста как сделать округление чисел в массиве до(допустим) 4 символов после запятой. for i:=1 to...

Округление чисел
Добрый день уважаемые форумчане. Тем конечно измусолена донельзя, но все же... Есть числа: 12.23; 17.654; 0.81 как округлить значения...

11
1 / 1 / 7
Регистрация: 28.06.2011
Сообщений: 342
13.05.2012, 10:15
Это не "фигня", а проблема вещественных чисел, общеизвестная.
0
0 / 0 / 0
Регистрация: 12.05.2012
Сообщений: 8
17.05.2012, 22:13  [ТС]
Я уже нашел решение - я сравниваю числа как строки, а не вычитаю их.
Просто хотел найти более естественное решение проблемы...
Видно не судьба!
Тем кому интересно - могут посмотреть
http://forum.sources.ru/index.php?showtopic=81239
0
1 / 1 / 7
Регистрация: 28.06.2011
Сообщений: 342
20.05.2012, 09:57
Это ты сам себе какой-то геморрой придумал и теперь через то место, где он(геморрой) располагается и решил проблему.:-))
0
0 / 0 / 0
Регистрация: 12.05.2012
Сообщений: 8
23.05.2012, 02:05  [ТС]
Гемор придумал не я, а Дельфи.
А то что решил через задницу, так я об этом и говорил! А если знаешь как решить не через задний проход, так не умничай, а скажи!
0
1 / 1 / 7
Регистрация: 28.06.2011
Сообщений: 342
23.05.2012, 09:44
Я не умничаю.Это просто ты тупишь. Умудриться на 10 строках кода налепить столько GOTO в программе на Паскале !!! Это нужно быть уникалом !!! Честно. У меня в программе по оптовому складу НЕТ НИ ОДНОГО безусловного перехода !!!Да и вообще, я забыл, что это такое. НЕТУ В БП НЕОБХОДИМОСТИ. Это говорит о чем ?.. Мало знаем.Если бы еще знать, ЧТО ТЫ ХОТЕЛ СДЕЛАТЬ, может быть кто-нибудь и помог бы...
0
1 / 1 / 7
Регистрация: 28.06.2011
Сообщений: 342
23.05.2012, 09:54
По ссылке тебе ответили так же, как и я, только более подробно.Внятно вопрос поставь, может что-то и выйдет не через ж..пу. Да, еще. Циклы есть не только for. Есть еще while условие/ repeat until условие
0
0 / 0 / 0
Регистрация: 12.05.2012
Сообщений: 8
24.05.2012, 18:02  [ТС]
Вот именно, что по ссылке объяснили "более подробно". Поскольку, если бы я знал что это такое, то не спрашивал бы! Логично?
А по поводу "БП", скажи а чем он плох? Лично я не вижу особой разницы. Может я чего-то и не знаю, так просвети!
И еще:
1.цикл for быстрее
2. цикл while туда не тулится!
0
6 / 6 / 3
Регистрация: 17.10.2007
Сообщений: 1,119
24.05.2012, 18:10
"Go To" ne rekomenduyutsya uzhe let 20. Priexali...
0
6 / 6 / 3
Регистрация: 17.10.2007
Сообщений: 1,119
24.05.2012, 18:13
DemonP,

Takoj kod (s GOTO) nazivayut vo vsem mire "Spagetti" i boyatsya kak chumi, kak stigmi.

vladconn
0
0 / 0 / 0
Регистрация: 12.05.2012
Сообщений: 8
25.05.2012, 15:38  [ТС]
Послушай, я не претендую на непогрешимость - я не программист, а экономист по образованию!
Поэтому программирую как умею. Если где я не прав, то скажи почему и как правильно.
Или дай ссылку, где разъяснено. А то пальцем тыкать "так неправильно" или "это общеизвестно" все мастера... Да если бы я знал об этом "общеизвестном", я бы наверно не писал здесь?!
А толком никто объяснить не может!
0
6 / 6 / 3
Регистрация: 17.10.2007
Сообщений: 1,119
26.05.2012, 17:44
DemonP,

ОК, ОК. Не обижайся. Ведь теперь вот знаешь, что GOTO, дети, плохо. Вообще говоря, как общая практика и теория дизайна кода. Все давно на классах... Раз ты не программер, то ничего страшного. Я лишь хотел оградить от пагубного пристрастия к давно не практикуемым приемам кодирования.

А вот как делать - надо долго учиться. Но вам может это и не нужно, как экономисту. Показать "как" в этом форуме я к сожалению не смогу. Я из Visual Basic, залетел полюбопытствовать.

Успехов.

vladconn
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.05.2012, 17:44
Помогаю со студенческими работами здесь

RoundTo - округление чисел
Почему не работает roundTo? procedure TForm1.Button1Click(Sender: TObject); begin a:= StrToFloat(Edit1.Text); b:=...

Округление дробных чисел
В общем, в экселе есть столбец с определенными параметрами. Программа выбирает из этого столбца &quot;стабильный кусок&quot;, в котором...

Нестандартное округление чисел
Как округлять числа до 0.05, 0.2, 0.1 и т.д... Например: 1.462 до 0.05 - 1.45, до 0.2 - 1.4, до 0.1 - 1.5...

Непонятное округление чисел при записи в бд
При попытке записать число 10(10.00) в ячейку(DEMICAL 3,2 или 3,3) всегда получается 9,99 или 0,999(для любого числа) соответственно. Не...

округление чисел
подскажи как сделать что бы число допустим 0,8675645 округлялось не до 1, а до 0?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru