Autor | Zpráva | ||
---|---|---|---|
W4C Profil * |
#1 · Zasláno: 12. 2. 2010, 08:37:48
Potřebuji dosadit do javascriptové funkce vzorec X= (Y+20.5) * 3/8
Jedná se mi o správnost syntaxe při operaci přičítání čísla 20.5 k proměnné Y, protože s operátorem "+" mi to nefunguje správně. Výsledek je jiný než má být a nevím proč. Když zadám místo znaku "+" jiné operátory("-,*,/"), tak funkce funguje jak má, takže problém je jedině v tom +.Ale bohužel netuším, jak se ho zbavit. při Y=15 to hodí výsledek 570 (správně má být výsledek 13.3125) Příčina špatného výsledku: místo přičtení čísla 20.5 k proměnné Y dojde k tomu, že se odstraní jeho desetinná část(.5) a jeho celá část(20) se pripoji vpravo k hodnotě proměnné Y (15). Tzn hodnota proměnné Y se změní z 15 na hodnotu 1520(má to být 35.5) a po vynásobení 3/8 vyjde 570, což je samozřejmě blbě. Zápis: if (neco=="Y") X=(document.getElementById("Y").value +20.5) * 3 / 8; Kde je chyba a jak tu hodnotu tedy správným způsobem přičtu, když s + to nejde? |
||
Chamurappi Profil |
#2 · Zasláno: 12. 2. 2010, 09:08:53
Reaguji na W4Ce:
Sčítáš-li řetězec a číslo, je výsledkem řetězec. Zajímá-li tě víc těchto pravidel, viz Hádanka. Vynásob document.getElementById("Y").value jedničkou.
|
||
_es Profil |
#3 · Zasláno: 12. 2. 2010, 09:18:26 · Upravil/a: _es
W4C:
„Kde je chyba a jak tu hodnotu tedy správným způsobem přičtu“ document.getElementById("Y").value je textový reťazec, nie číslo, preto dochádza k spájaniu reťazcov operátorom +. Číslo 20.5 je predtým prevedené na reťazec "20.5". A podobná, len opačná, konverzia nastáva pri operátore *. Teda ti len treba ten reťazec previesť na číslo: parseFloat(document.getElementById("Y").value) |
||
W4C Profil * |
#4 · Zasláno: 12. 2. 2010, 10:16:37
Chamurappi, _es:
Hoši, díky moc za řešení a za info, po vynásobení *1 - X=(document.getElementById("Y").value *1 +20.5) * 3 / 8; Informace tohoto typu se /velmi/ špatně hledají, hlavně v kombinací se znakem "+", který i Google ignoruje. Pravidla se budou určitě hodit Javascript se učím se metodou pokus-omyl a úpravou již hotových scriptů, takže nastává čas se začít věnovat i teorii. :) |
||
W4C Profil * |
#5 · Zasláno: 12. 2. 2010, 10:44:59
Zápis
X=(parseFloat(document.getElementById("Y").value) +20.5) * 3 / 8; |
||
_es Profil |
#6 · Zasláno: 12. 2. 2010, 11:00:14
W4C:
x*1 v princípe pracuje rovnako ako Number(x) . Alebo si mohol použiť aj fintu: x - -20.5 .
parseFloat sa "viac snaží" z reťazca to číslo získať, ak je na konci ešte nejaký text a pod.
|
||
peta Profil |
#7 · Zasláno: 12. 2. 2010, 11:13:47
W4C:
"Informace tohoto typu se /velmi/ špatně hledají" Prikladu na pocitani v JS je plny inet, stacilo hledat treba kalkulacku a prozkoumat kod v cem se lisi tvuj. Ale je to bezny problem, o nic nejde. |
||
W4C Profil * |
#8 · Zasláno: 12. 2. 2010, 15:14:36
peta:
nj, ale najít takovou, ve které je kód psaný tímto způsobem mi přestalo po cca 30-tém neúspěšném pokusu a vrtání se v nepřehledných kódech bavit .:) _es Mohl,.teď to už vím :) Dalo by se to vlastně použít i ve tvaru (Y -1 +21.5) |
||
Časová prodleva: 14 let
|
0