![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 164 Pomógł: 4 Dołączył: 29.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam niewielki problem z JS. Otóż mam dwa pola formularza, w które wpisuję liczby 20-to cyfrowe. Następnie do trzeciego pola formularza mam wpisać automatyczną sumę lub też różnicę tych dwóch pól. Wiadomo, muszę te dwa pola sparsować, bo to stringi. I tak też robię, pojawia się jednak problemgdy wpisana liczba jest zbyt duża. Podam przykład: P1: 00000001 P2: 99999999 S: P2-P1 = 99999998 I to jest ok, ale gdy wpiszę dane: P1: 00000000000000000001 P2: 99999999999999999999 S: P2-P1 = 100000000000000000000 Czy int nie przechowuje tak dużych liczb?? Czy może przyczyna jest w innym miejscu?? Kod JS: Kod function funcSum(nr) { var zm1 = parseFloat(document.getElementById("pierwszynumer").value, 10); var zm2 = parseFloat(document.getElementById("ostatninumer").value, 10); var zm3 = parseFloat(document.getElementById("iloscrecept").value, 10); switch(nr) { case 1: { if(zm1 && zm2) document.getElementById("iloscrecept").value=(zm2-zm1); else if(zm1 && zm3) document.getElementById("ostatninumer").value=(zm1+zm3); break; } case 2: { if(zm1 && zm2) document.getElementById("iloscrecept").value=(zm2-zm1); else if(zm2 && zm3) document.getElementById("pierwszynumer").value=(zm2-zm3); break; } case 3: { if(zm1 && zm3) document.getElementById("ostatninumer").value=(zm1+zm3); else if(zm2 && zm3) document.getElementById("pierwszynumer").value=(zm2-zm3); break; } } return true; } Kod XHTML: Kod <table> <tbody> <tr><td>Pierwszy numer z zakresu</td><td><input type="text" value="" onblur="funcSum(1);" id="pierwszynumer" name="pierwszynumer"/></td></tr> <tr><td>Ostatni numer z zakresu</td><td><input type="text" value="" onblur="funcSum(2);" id="ostatninumer" name="ostatninumer"/></td></tr> <tr><td>Ilość recept</td><td><input type="text" value="" onblur="funcSum(3);" id="iloscrecept" name="iloscrecept"/></td></tr> <tr><td>Nazwa świadczeniobiorcy</td><td><input type="text" value="" name="swiadczeniobiorca"/></td></tr> <tr><td><input type="submit" value="dalej" name="dalej2"/></td><td/></tr> </tbody> </table> Proszę o rady, pomoc, sugestie |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 41 Dołączył: 6.04.2009 Skąd: Gdańsk/okolice Ostrzeżenie: (0%) ![]() ![]() |
na początku witam, jako że to mój pierwszy post tutaj
![]() Int w JS zdaje się obsługuje -2^31 do 2^31-1, względnie 2^32-1, czyli odrobinę z zakresu liczb 10-cio cyfrowych... także musisz znaleźć inne rozwiązanie. mi na szybko przychodzą do głowy tylko metody rodem z C, może ktoś bardziej 'naumiany' JS zna lepszy sposób na to... |
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
-------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 164 Pomógł: 4 Dołączył: 29.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ja tutaj zastanawiam się nad rozbiciem całości na dwie części, czyli zamiast 20-to cyfrowej liczby, mieć dwie 10-cio cyfrowe. O przekroczeniu zakresu też myślałem, tylko nie zdawałem sobie sprawy, że js pod tym względem jest tak ograniczony.
A jaki masz sposób rodem z C?? Mam trochę styczności z programowaniem, więc śmiało możesz zapodać. Jeżeli nie na forum (jeszcze ktoś posądzi o pisanie nie na temat), to na PW. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 41 Dołączył: 6.04.2009 Skąd: Gdańsk/okolice Ostrzeżenie: (0%) ![]() ![]() |
sposób zupełnie na piechote - implementacja najzwyklejszego dodawania pisemnego.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 15.08.2025 - 03:53 |