Autor | Zpráva | ||
---|---|---|---|
pollo22 Profil |
#1 · Zasláno: 8. 6. 2009, 15:57:04
zdravim vas. vypočitavam určitu sumu cez js a potrebujem vysledok okresať na 2 desatine miesta. (124.23)
Cez php-čko by som to riešil cez number_format ale neviem ako to spraviť cez JS. viete mi niekto poradiť? |
||
Kajman_ Profil * |
#2 · Zasláno: 8. 6. 2009, 16:03:20
Math.rand() |
||
Kajman_ Profil * |
#3 · Zasláno: 8. 6. 2009, 16:03:59
Pardon,
Math.round() |
||
_es Profil |
#4 · Zasláno: 8. 6. 2009, 16:13:57
Ak x je číslo a napríklad 3.1 treba zobraziť ako 3.10 tak:
x.toFixed(2) |
||
Chamurappi Profil |
#5 · Zasláno: 8. 6. 2009, 16:26:49
Reaguji na _es:
Tato metoda není spolehlivá. Pokud v proměnné x bude třeba 0.008, tak Explorer vrátí 0.00 a ostatní prohlížeče 0.01. |
||
_es Profil |
#6 · Zasláno: 8. 6. 2009, 16:46:35 · Upravil/a: _es
Chamurappi
tak potom najprv round, potom toFixed a možno sa bude pollo22ovi (predchádzajúce dotazy) hodiť aj toLocaleString: var x=0.008; x1= Math.round(x*100)/100; x2 = (Math.round(x*100)/100)).toFixed(2); x3 = (Math.round(x*100)/100).toLocaleString() |
||
pollo22 Profil |
#7 · Zasláno: 9. 6. 2009, 08:11:50 · Upravil/a: pollo22
_es
Použil som možnosť x3. V podstate to roby to čom som chcel avšak je tu ešte menši problem. malo by vratiť 3404,6 ale mne vráti 3 407,25 čiže je tam rozdiel nejake tri koruny. Neviete prečo? nesuvisi to s zaokruhlovaním? Ak krátim celým číslom tak je to ok. Netraba mi sice nikde kratiť čislom 2.9 ale chcem vedieť ako to riešiť kebyže som to v buducnosti potreboval. |
||
_es Profil |
#8 · Zasláno: 9. 6. 2009, 09:20:28
Napíš čo je x a čo to vracia, skús rôzne prehliadače. Musíš zabezpečiť, aby x bolo číslo, alebo reťazec v presnom tvare čísla.
Metóda toLocaleString vracia číslo v miestnom formáte, takže pri rôznom nastavení národného prostredia budú rôzne oddeľovače tisícov, desatinná čiarka/bodka a pod. Podľa mňa to je žiadúce, každému sa čísla zobrazia tak, ako je zvyknutý. |
||
pollo22 Profil |
#9 · Zasláno: 9. 6. 2009, 10:05:14
_es
x môže byť hocijake číslo. x je suma, ktorá sa prepočitáva kurzom 30.1260. |
||
_es Profil |
#10 · Zasláno: 9. 6. 2009, 11:23:44 · Upravil/a: _es
pollo22
Asi to nejako zle počítaš, zaokrúhľuješ na zlom mieste výpočtu a pod. „malo by vratiť 3404,6 ale mne vráti 3 407,25“ Aké máš x, ktoré dosadzuješ do Math.round(x*100)/100 z ktorého by ti podľa teba malo vyjsť 3404,6 no vyjde ti 3 407,25? |
||
peta Profil |
#11 · Zasláno: 9. 6. 2009, 13:13:34
pollo22
mas hotovy konkretni priklad? ne? pak proc se ptas na reseni v pripade, ze ti vyjde 3 407,25 a melo vyjit 3404,6 ? Jak my mame zjistit z ceho jsi k tomu vysledku dospel? x3 = (Math.round(x*100)/100).toLocaleString() Na tuhle funkci bych rozhodne nespolehal. x.toFixed(2) Tahle funkce se chova v kazdem prohlizeci jinak, obvykle nefunguje, viz pripad Opera 8, tusim. Mel jsem pocit, ze v IE a FF se to chova stejne, ale jak tak ctu, zrejme ne. '0.008, tak Explorer vrátí 0.00 a ostatní prohlížeče 0.01' IE to vraci chybne, protoze podle literatury, kterou znam ja, ma dojit k zaokrouhleni round. http://javascript-reference.info/#numberstring V te same se pise o toLocaleString jako o problemove funkci. Jak by mel vypadat ten priklad, aby se dal resit? n = 100; x = 3404,6; s = ((Math.round(x*n)/n) + 1/(10*n)) + ''; //prevod na str y = substring(0,s.length-1); alert(y) Vim, co je vstup, znam rovnici, od tebe vim, co chci na vysledku |
||
_es Profil |
#12 · Zasláno: 9. 6. 2009, 14:13:23 · Upravil/a: _es
peta
„toLocaleString jako o problemove funkci“ Robí to, čo má, zobrazí číslo podľa miestnych zvyklostí a podpory prehliadača, teda niečo iné Čechovi a niečo iné Angličanovi. Ak to tak vyhovuje, tak sa použije, ak nevyhovuje, použije sa niečo iné. „Jak by mel vypadat ten priklad, aby se dal resit? “ „x = 3404,6;“ takže x bude 3404.0 „y = substring(0,s.length-1); “ asi si chcel y = s.substring(0,s.length-1); „Vim, co je vstup, znam rovnici, od tebe vim, co chci na vysledku“ ak n bude 100 a x bude 1.4 tak y sa ti "zaokrúhli" na 1.400999999999999 |
||
Časová prodleva: 15 let
|
0