[ JavaScript ] Problém s desatinnými číslami
Dobry den (rano )
Mam taky problem , ze ked nacitam z formulara na stranke (<option value=desatinnecislo ....) desatinne cislo, a testujem ho v Javascripte tak mi to hadze nezmysly.
PRIKLAD:
z dvoch SELECT-ov na formulari nacitam dve desatinne cisla
function check(form)
{
odd=form.odd.value;
ddo=form.ddo.value;
if (odd > ddo)
{
alert("Zle zadaný čas");
return false;
}
else{
return true;}
}
Priklad: nacital hodnoty, : odd=7.30 a ddo=9.00 ... podmienka normalne funguje, odd<ddo
ALE! Pokial nacita hodnoty: odd=7.30 a ddo=10.00 (a vyssie) ... tak mi podmienka nefunguje, proste mi to hodi, ze 10.00 je mensie ako 7.30 !!!
no je to normalne ?
existuje nejaka funkcia na konverziu na desatinne cislo ? alebo v com je problem ?
vopred dakujem vsetkym za radu
Je to normálne - pretože value je reťazec, tak to porovnáva ako reťazce. Keď odčítaš od value nulu, tak sa to automaticky prekonvertuje na číslo:
Je dobré pri deklarovaní premenných, ktoré používaš iba vo funkcii, použiť kľúčové slovo var. Bez neho sa tie premenné používajú ako globálne premenné.
vdaka... funguje to ... podmienka uz vyhodnocuje dobre, akurat ze ked nacita 10.00, tak cez Javascript mi prejde len 10 . Ale to nevadi , podstatne je ze ta podmienka uz ide .
este raz vdaka
Vynásob to 100.
no aj to je riesenie ..... ale mne to uz funguje aj takto ....
len vies ja som si myslel ze sa da v JS zadefinovat typ premennej .... ale vdaka
V JS nie som odborínk, ale pokiaľ viem, tak tam sú premenné riešené horšie ako v BASICu. Nie len, že premennú nemusíš definovať presne, ale ona môže mať typ akýkoľvek (typ Variant v Delphi). No fuj.
Osobne, ak mám uchovávať čas ako číslo, tak takýmto spôsobom (vynásobený 100) - najľahšia práva formátu (úprava na hodiny, minúty a podobne).
Edit: A mám dojem, že som to už raz tak aj použil.
nj, asi to tak aj spravim .... Milos , si hlavicka
Cas je dobre ukladat v pocte sekund alebo minut apod (v najnizsej jednotke aku pouzivas)
Ak pouzivam len hodiny a minuty tak napr. 7:30 bude prepocitany na: 7*60 + 30
Ma to vyhodu v tom, ze sa da priamo s tymi hodnotami ratat casovy rozdiel (cas_a - cas_b), co sa pri ukladani ako hodiny.minuty neda (napr. 10.30 - 9.45 by bolo 0.85 co by bol nezmysel - muselo by sa to potom pracne preratavat), ale reprezentovane ako (10*60+30) - (9*60+45) = 45 (minut) - co suhlasi.