![]() |
Прошу помочь!!!
Нужна программа для расчета положения солнца. Вот что наваял. Но нужна точность 7 знаков после запятой. Как выкрутится?
program NewProject1; var a,a1,a2,a3,b,b1,b2,b3,c,c1,c2,d,d1,d2,e,e1,f,f1,f2 ,g,g1,k,tc,dal,b00,t00,sin1,sin2,sin3,sin4,tg1,tg2 ,tg3,tg4,cos1,cos2,cos3,cos4: real; var a11,a22,a33,b11,b22,b33,c11,c22,d11,d22,e11,f11,f2 2,g11,k11,tc11,label_id1,label_id2,label_id3:integ er; ok:command; begin ShowForm; ok:=createCommand('Ок',CM_OK,1); a11:=formAddTextField('Широта в градусах','',20,TF_NUMERIC); a22:=formAddTextField('Широта в минутах','',20,TF_NUMERIC); a33:=formAddTextField('Широта в секундах','',20,TF_NUMERIC); addCommand(ok); delay(500); repeat until getClickedCommand=ok; a1:= StringToReal(FormGetText(a11),10); a2:= StringToReal(FormGetText(a22),10); a3:= StringToReal(FormGetText(a33),10); a:=((a3/60)+a2)/60+a1; ClearForm; b11:=formAddTextField('Долгота в градусах','',20,TF_NUMERIC); b22:=formAddTextField('Долгота в минутах','',20,TF_NUMERIC); b33:=formAddTextField('Долгота в секундах','',20,TF_NUMERIC); addCommand(ok); delay(500); repeat until getClickedCommand=ok; b1:= StringToReal(FormGetText(b11),10); b2:= StringToReal(FormGetText(b22),10); b3:= StringToReal(FormGetText(b33),10); b:=((b3/60)+b2)/60+b1; ClearForm; c11:=formAddTextField('Время, часов','',20,TF_NUMERIC); c22:=formAddTextField('Время, минут','',20,TF_NUMERIC); addCommand(ok); delay(500); repeat until getClickedCommand=ok; c1:= StringToReal(FormGetText(c11),10); c2:= StringToReal(FormGetText(c22),10); c:= (c2/60)+c1; ClearForm; d11:=formAddTextField('b0 градусов','',20,TF_NUMERIC); d22:=formAddTextField('b0 минут','',20,TF_ANY); addCommand(ok); delay(500); repeat until getClickedCommand=ok; d1:= StringToReal(FormGetText(d11),10); d2:= StringToReal(FormGetText(d22),10); d:= (d2/60)+d1; ClearForm; e11:=formAddTextField('^b0 минут','',20,TF_ANY); addCommand(ok); delay(500); repeat until getClickedCommand=ok; e1:= StringToReal(FormGetText(e11),10); e:= e1/60; ClearForm; f11:=formAddTextField('t0 градусов','',20,TF_NUMERIC); f22:=formAddTextField('t0 минут','',20,TF_ANY); addCommand(ok); delay(500); repeat until getClickedCommand=ok; f1:= StringToReal(FormGetText(f11),10); f2:= StringToReal(FormGetText(f22),10); f:= (f2/60)+f1; ClearForm; g11:=formAddTextField('^t0 минут','',20,TF_ANY); addCommand(ok); delay(500); repeat until getClickedCommand=ok; g1:= StringToReal(FormGetText(g11),10); g:= g1/60; ClearForm; k11:=formAddTextField('Коэффициент К','',20,TF_ANY); tc11:=formAddTextField('Tc(весеннее и летнее время=1)','',20,TF_NUMERIC); addCommand(ok); delay(500); repeat until getClickedCommand=ok; k:= StringToReal(FormGetText(k11),10); tc:= StringToReal(FormGetText(tc11),10); ClearForm; dal:=(c-tc)+k; b00:= d+dal*e; t00:=f+dal*g+15*(c-tc)+b; sin1:= sin(toRadians(t00)); tg1:= tan(toRadians(a)); cos1:= cos(toRadians(t00)); tg2:= tan(toRadians(b00)); cos2:= cos(toRadians(a)); tg3:= sin1/((tg1*cos1-tg2)*cos2); tg4:= atan(tg3)*180/pi; label_id1 := formAddString('b='+b00); label_id2 := formAddString('t='+t00); label_id3 := formAddString('tga='+tg4); delay(50000); end. Прошу ПОМОГИТЕ!!!!!! |
Ответ: Прошу помочь!!!
Поставить в свойствах проекта Real Numbers: Floating point. Будет использоваться формат с плавающей точкой, точность у него где-то 17 знаков.
Кстати, в хелпе написано: Цитата:
|
Ответ: Прошу помочь!!!
Цитата:
Java ME поддерживает float & double (и другие милые вещи) начиная с MIDP2.0. А это - все устройства выпущенные в ~2005ом году и позже (хотя стандарт был доступен и ранее). То, чем занимается MP, вещь хорошая, но увы - уже не полезная. |
Ответ: Прошу помочь!!!
Блин! Как просто!!!
Все работает!!! ОГРОМНОЕ СПАСИБО ВСЕМ!!! |
Ответ: Прошу помочь!!!
Цитата:
Работает ли МП с вещественными числами MIDP2.0 в режиме "Floating point" или эмулирует их как и в "Fixed point"? |
Часовой пояс GMT +4, время: 15:43. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot