| | |
| Stránka: 1 z 1
| [ Príspevkov: 8 ] | |
Autor | Správa |
---|
Registrovaný: 23.04.09 Prihlásený: 26.09.15 Príspevky: 23 Témy: 7 | Napísal nico: 02.12.2009 13:06 | |
|
Ahojte,
ak niekto moze poradit budem rad...
Problem je ze pri pouziti operatora if v tvare if($val==360){...}
nedokaze byt podmienka vyhodnotena spravne i ked premenna $val nadobuda hodnotu 360 po konverzii z hodnoty v radianoch
Je to najskor len malickost ... ale momentalne s tym neviem pohnut ... najskor je to problem nezhody ciselnych typov premennych, ale to by nemal byt preblem pri pouziti porovnavacieho operatora ==
Za kazdu radu vopred vdaka
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 02.12.2009 13:11 | |
|
Vyskusaj var_dump($val), co vypisuje?
|
|
Registrovaný: 23.04.09 Prihlásený: 26.09.15 Príspevky: 23 Témy: 7 | Napísal autor témy nico: 02.12.2009 15:24 | |
|
ahoj
skusal som uz ... vysledok bol float(360) ... teda predpokladam,ze konstanta 360 na pravej strane je deklarovana ako int(360) ... skusal som zmenit jej typ z int do float, ale stale bol neuspech ... asi tak
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 02.12.2009 15:32 | |
|
Problem bude v niecom inom. Daj si do tej podmienky echo, ci to nieco vypisuje, pretoze u mna je normalne podmienka pravdiva, 360.0 == 360.
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
skus postnut zdrojak...
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 23.04.09 Prihlásený: 26.09.15 Príspevky: 23 Témy: 7 | Napísal autor témy nico: 02.12.2009 22:33 | |
|
zdar pani ... trocha som to upravil ... ospravedlnujem sa za ten mensi chaos v kode ...
Kód: $x1=5; $y1=2; $x=array(0,4,6,6); $y=array(0,1,1,4); $i=3;
$suma_uhlov=0;
for ($j=1;$j<$i;$j=$j+1) { $a=sqrt(pow(($x1-$x[$j]),2)+pow(($y1-$y[$j]),2)); $b=sqrt(pow(($x1-$x[$j+1]),2)+pow(($y1-$y[$j+1]),2)); $p=sqrt(pow(($x[$j]-$x[$j+1]),2)+pow(($y[$j]-$y[$j+1]),2));
$uhol[$j]=acos((pow($a,2)+pow($b,2)-pow($p,2))/(2*$a*$b)); }
$a=sqrt(pow(($x1-$x[$j]),2)+pow(($y1-$y[$j]),2)); $b=sqrt(pow(($x1-$x[1]),2)+pow(($y1-$y[1]),2)); $p=sqrt(pow(($x[$j]-$x[1]),2)+pow(($y[$j]-$y[1]),2));
$uhol[$j]=acos((pow($a,2)+pow($b,2)-pow($p,2))/(2*$a*$b));
foreach($uhol as $current) { $suma_uhlov=($suma_uhlov+$current); }
$suma_uhlov=rad2deg($suma_uhlov);
if ($suma_uhlov==360) { echo 'ANO'; } else { echo 'NIE'; }
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
ak $suma_uhlov pretypujes na string, tak to uz zbehne v poriadku...
//je to dost nezvycajne spravanie... ak napr. zaokruhlis hodnotu $suma_uhlov, tak to tiez funguje... ako keby funkcia rad2deg nevracala v skutocnosti taku hodnotu, aka sa vypisuje cez echo ci var_dump, vykonava sa tam nejake zaokruhlovanie na pozadi...
Kód: echo (int)359.9999999999999; //vypise 359 echo (int)359.99999999999999; //vypise 360
podobne to funguje aj s float...
s najvacsou pravdepodobnostou bude prave tento fakt pricinou chybneho vyhodnotenia podmienky v tvojom skripte...
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 23.04.09 Prihlásený: 26.09.15 Príspevky: 23 Témy: 7 | Napísal autor témy nico: 03.12.2009 10:23 | |
|
vdaka stenley ... tuto cestu som uz volil aj predtym ako jedno z rieseni, len mi povedzme nedalo spavat to preco? ... velka vdaka za pomoc
|
|
| Stránka: 1 z 1
| [ Príspevkov: 8 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|