При вычитании чисел появляется остаток - PascalABC.NET

Формулировка задачи:

razT:=S[5,b]-sumT;
razT:=razT/2;
S[5,h]:=S[5,h]+razT;
writeln ('T',h,'=',S[5,h]);
S[5,h1]:=S[5,h1]+razT;
writeln ('T',h1,'=',S[5,h1]);
подскажите в чем проблема? когда razT прибавляется к элементу S[5,h1] то выводит вот такое число:0.0600000000000001, хотя должно 0.06, из-за этого в дальнейших расчетах получаются не те числа. С элементом S[5,h] все нормально, такое выдает если razT получается отрицательным, при положительном значении тоже все нормально выводит

Код к задаче: «При вычитании чисел появляется остаток - PascalABC.NET»

textual
begin
  var НомерЗвена        := 'A3';
  var Тип               := 3;
  var РазмерЗвена       := 200.06 + 1e-8;
  var ВерхнееОтклонение := 0.01 - 1e-8;
 
  // Без форматирования - как есть
  WriteLn('-'*57);
  WriteLn('| Номер звена | Тип | Размер звена | Верхнее отклонение |');
  WriteLn('|    ', НомерЗвена, '     | ', Тип, '  | ', РазмерЗвена,
          ' |   ', ВерхнееОтклонение, '     |');
  WriteLn('-'*57, NewLine);
  
  // Способ c использованием формата вывода
  WriteLn('-'*57);
  WriteLn('| Номер звена | Тип | Размер звена | Верхнее отклонение |');
  WriteLn('|    ', НомерЗвена:4, '     | ', Тип:2, '  | ', РазмерЗвена:12:4,
          ' |   ', ВерхнееОтклонение:12:4, '     |');
  WriteLn('-'*57, NewLine);
  
  // Cпособ с использованием форматной строки
  WriteLn('-'*57);
  WriteLn('| Номер звена | Тип | Размер звена | Верхнее отклонение |');
  WriteLnFormat('|     {0,3}     | {1,2}  | {2,12:f4} |   {3,12:f4}     |',
                НомерЗвена, Тип, РазмерЗвена, ВерхнееОтклонение);
  WriteLn('-'*57, NewLine);
end.
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.

11   голосов, оценка 4.364 из 5


СДЕЛАЙТЕ РЕПОСТ