Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript]zaokrąglanie do określonej liczby miejsc po przecinku
neo1986kk
post 27.01.2010, 18:24:48
Post #1





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

Ostrzeżenie: (0%)
-----


Witam jak zaokrąglić wynik do 2 miejsc po przecinku?
W ogole dlaczego wg javascript

3*1.9= 5.699999999999999999999999999.... a nie 5.7?

  1. document.getElementById('wartosc').value = parseFloat(document.getElementById('ilosc').value) * parseFloat(document.getElementById('cena').value);


Pozdrawiam:)
Go to the top of the page
+Quote Post
zegarek84
post 27.01.2010, 18:40:49
Post #2





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


tutaj masz wszystko napisane co i jak oraz przy okazji wyjaśnione te "kwiatki":
http://www.doman.art.pl/kursjs/kurs/math.html


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
230005
post 27.01.2010, 18:57:55
Post #3





Grupa: Zarejestrowani
Postów: 316
Pomógł: 36
Dołączył: 2.04.2008

Ostrzeżenie: (0%)
-----


Miałem identyczny problem i zdaje się ktoś z tego forum zapodał link do tej funkcji:

[JAVASCRIPT] pobierz, plaintext
  1.  
  2. function fixstr(num) {
  3. var numv=num-0;
  4. var sign=(numv>=0?1:-1);
  5. var numabs=numv*sign;
  6. var naint=Math.floor(numabs);
  7. var nacent=Math.round((numabs-naint)*100);
  8. if (nacent>=100) {nacent=0; naint++;}
  9. var nais=''+naint;
  10. var nacs=(nacent<10?'0':'')+nacent;
  11. if (naint+nacent==0) sign=1;
  12. return (sign==1?'':'-')+nais+'.'+nacs;
  13. }
  14.  
[JAVASCRIPT] pobierz, plaintext


Działa bez zarzutu, a błąd wynika z buga precyzji silnika js w niektórych przeglądarkach. Ciekawe, że w ie nie ma tego problemu.
Go to the top of the page
+Quote Post
neo1986kk
post 27.01.2010, 19:28:11
Post #4





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

Ostrzeżenie: (0%)
-----


No właśnie, wszystko ok tylko jak to zrobić na moich "value"
Wymyśliłem coś takiego ale nie działa:(
  1. function cena()
  2. {
  3. reg = /^[0-9.]{1,8}$/;
  4. wyn = document.getElementById('cena').value.match(reg);
  5.  
  6. wynw = parseFloat(document.getElementById('ilosc').value) * Math.round(wyn*Math.pow(10,2))/Math.pow(10,2);
  7. document.getElementById('wartosc').value = Math.round(wynw*Math.pow(10,2))/Math.pow(10,2);


sorry, sorry

działa wszystko jak należy, mialem jeszcze jedną pętle w pętli, której nie zmieniłem
teraz jest wszystko ok
Go to the top of the page
+Quote Post
poli25
post 18.09.2010, 08:53:19
Post #5





Grupa: Zarejestrowani
Postów: 239
Pomógł: 20
Dołączył: 19.02.2010

Ostrzeżenie: (0%)
-----



function fixstr(num) {
var numv=num-0;
var sign=(numv>=0?1:-1);
var numabs=numv*sign;
var naint=Math.floor(numabs);
var nacent=Math.round((numabs-naint)*100);
if (nacent>=100) {nacent=0; naint++;}
var nais=''+naint;
var nacs=(nacent<10?'0':'')+nacent;
if (naint+nacent==0) sign=1;
return (sign==1?'':'-')+nais+'.'+nacs;
}ta funkcja nie działa za dobrze moze dla rownych kwot owszem

Ten post edytował poli25 18.09.2010, 08:54:09
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 1.05.2025 - 05:27