|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
... is not a valid floating point value...
Нужно написать программу через массив, вычисляющую функцию
Z= корень из (x[i]^2+1)+2*(y[i]^2+1)+(a[i]^2+1)/ число пи На ошибки вроде не ругается, но при запуске выдает ошибку что '3.5' is not a valid floating point value, и так с любым числом в StringGrid. Числа записаны правильно, через точку. Код: Код:
procedure TForm1.Button1Click(Sender: TObject); Const n=9; pi=3.14; Var a,x,y:array[1..n] of real; i:integer; s1,s2,s3,z : real; begin for i:=1 to n do a[i]:=StrToFloat(StringGrid1.Cells[i-1,0]); for i:=1 to n do x[i]:=StrToFloat(StringGrid2.Cells[i-1,0]); for i:=1 to N do y[i]:=StrToFloat(StringGrid3.Cells[i-1,0]); s1:=0; s2:=2; s3:=0; begin s1:=s1+(sqr(x[i])+1); s2:=s2*(sqr(y[i])+1); s3:=s3+(sqr(a[i])+1); end; z:=sqr(s1+s2+s3)/pi; Label1.Caption:='z='+FloatToStrF(z,ffFixed,6,2); end; end. Прошу помочь в исправлении ошибки. Заранее спасибо. Последний раз редактировалось lmikle, 08.12.2019 в 21:15. |
#2
|
|||
|
|||
числа записаны правильно с твоей точки зрения.
а вот с точки зрения системы - видимо нет. Попробуй конвертировать числа с помощью вот такой функции: Код:
function StrToFloatRegSafe(S : String) : Double; begin S := StringReplace(S,',',DecimalSeparator,[rfReplaceAll]); S := StringReplace(S,'.',DecimalSeparator,[rfReplaceAll]); Result := StrToFloat(S); end; |