Autor | Zpráva | ||
---|---|---|---|
Marťan04 Profil * |
#1 · Zasláno: 10. 1. 2013, 19:46:55
Můžu se zeptat, dá se v JavaScriptu počítá s procenty? Jestli ano, jak? Děkuji za odpověď.
|
||
Radek9 Profil |
#2 · Zasláno: 10. 1. 2013, 19:51:52
Marťan04:
Jistě, že dá. Stejně jako v jakémkoli jiném jazyce. Počítáš se setinami. :-) Např. 80 % = 0.8, 15 % = 0.15 atd. |
||
Joker Profil |
#3 · Zasláno: 10. 1. 2013, 19:54:11
Radek9:
V některých případech může být výhodnější s procenty počítat jako s celými čísly (například 80% je 80). |
||
1Pupik1989 Profil |
#4 · Zasláno: 12. 1. 2013, 10:13:51
Použil bych oba případy. Viz. css vlastnost opacity vs. filter alpha.
Většinou se ale přikláním k desetinnám. příklad: 200/100*80 = 160 200*0.8=160 a naopak 200/100*80/100 = 1.6 200*0.8/100 = 1.6 Asi mám pořád zafixováno, že násobení je nepatrně rychlejší než dělení. Samozřejmě příklad jde i zkrátit. |
||
Joker Profil |
#5 · Zasláno: 12. 1. 2013, 10:48:33
1Pupik1989:
Ono to není úplně na libovůli programátora ve smyslu „Vyberte si co co se vám víc líbí a to pak používejte všude“. Naopak každý programátor by měl volit řešení, které je v dané situaci lepší. Procenta jako desetinná čísla se samozřejmě hodí v případě, kdy mám počítat to procento z něčeho (což je příklad v [#4], pokud potřebuji spočítat 80% z 200, je lepší těch 80% mít jako desetinné číslo). Zároveň je nutné pamatovat na nepřesnost uložení reálných čísel v paměti, takže pokud mám procenta v pevné řádové čárce (obvykle celé číslo, čili v dané situaci se počítá jen s celými procenty a ne třeba 81,5%) a navíc spíš než výpočet tolika procent z něčeho dělám operace s těmi samotnými procenty, je výhodnější naopak celé číslo. Příklad: var slevaProc = 90; var novaProc = 100 - slevaProc; alert("Sleva " + slevaProc + "%, tedy zaplatíte jen " + novaProc + "% původní ceny!"); var slevaProc = 0.9; var novaProc = 1 - slevaProc; alert("Sleva " + slevaProc*100 + "%, tedy zaplatíte jen " + novaProc*100 + "% původní ceny!"); |
||
Keeehi Profil |
A kvůli té nepřesnosti, kterou zmiňoval Joker, tak nejdříve násobit a pak teprve dělit.
ANO 200*80/100 NE 200/100*80 |
||
Marťan04 Profil * |
#7 · Zasláno: 12. 1. 2013, 18:17:34
Marťan04:
Když mám třeba číslo 230 jak ho mám převést na číslo od jedné do sta? |
||
margin Profil * |
#8 · Zasláno: 12. 1. 2013, 22:56:40
Marťan04:
„Když mám třeba číslo 230 jak ho mám převést na číslo od jedné do sta?“ Ta otázka nemá smysl. |
||
1Pupik1989 Profil |
#9 · Zasláno: 13. 1. 2013, 10:51:57
Joker:
var slevaProc = 0.9; var novaProc = (1 - slevaProc).toPrecision(15); alert("Sleva " + slevaProc*100 + "%, tedy zaplatíte jen " + novaProc*100 + "% původní ceny!"); Používám toPrecision nebo toFixed. toPrecision nesmí bohužel být více jak patnáct, pak nastává ta nepřesnost (u toFixed nevím). Sice není dobré řetězec násobit číslem, ale funguje to. Jsem hodně zvyklý na desetinná čísla a od dob co používám matice vlastně nic jiného nevidím. |
||
peta Profil |
#10 · Zasláno: 14. 1. 2013, 10:45:48
Marťan04:
Co je 230? 230 = 230 230% = 230/100 = _ 2.30 _ Jak jako prevest 230 od 1 do 100? Myslis jako primou umeru jako v matice? Znas maximalni hodnotu? 100% = 1000 x% = 230 ------------- 230/1000 * 100% = 23% 23% = 23/100 = _ 0.23 _ |
||
_es Profil |
#11 · Zasláno: 14. 1. 2013, 11:02:30
1Pupik1989:
„Používám toPrecision nebo toFixed.“ Ale tieto metódy vracajú textový reťazec a nie číslo. Na zaokrúhľovanie čísel je vhodná funkcia Math.round. |
||
1Pupik1989 Profil |
#12 · Zasláno: 14. 1. 2013, 13:18:25
Mě trochu nedošlo, že přes toPrecision to proženu až u výstupu. Nicméně, že z toho bude řetězec jsem psal. Pravda, je, že ohodně hezčí by to bylo přes Math.round. Jako:
var slevaProc = 0.9; var novaProc = 1 - slevaProc; alert("Sleva " + (slevaProc*100) + "%, tedy zaplatíte jen " + Math.round(novaProc*100) + "% původní ceny!"); Navíc na textový řetězec jde použít matematické funkce, pokud je vyplněn pouze čísly. var a = "33.3" var b = 3 alert(a/3); //11.1 Takže asi tam jsem se nejspíše sekl. |
||
_es Profil |
#13 · Zasláno: 14. 1. 2013, 13:34:52
1Pupik1989:
„Navíc na textový řetězec jde použít matematické funkce, pokud je vyplněn pouze čísly.“ JS prevádza v niektorých prípadoch automaticky textové reťazce na čísla - operácia delenia je teda len s číslami. Okrem toho môže spoliehanie sa na automatický prevod viesť k ťažko odhaliteľným chybám: Ak sú x a y čísla, čo vráti výraz (x.toPrecision(15) + y.toPrecision(15)) ?
|
||
Časová prodleva: 11 let
|
0