• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem podczas zamiany liczby ujemnej na dodatnią.

Hosting forpsi easy 1 pln
+1 głos
91 wizyt
pytanie zadane 19 listopada w JavaScript przez Kczor Nowicjusz (130 p.)

Mam problem, ponieważ przy zamianie liczby z dodatniej na ujemną wszystko idzie ładnie, ale przy zamianie z ujemnej na dodatnią wyskakuje mi błąd Not A Number. Jest to spowodowane przez nawiasy, lecz te nawiasy niestety są obowiązkowe przy ujemnej liczbie. Macie jakiś pomysł jak zamienić na liczbę dodatnią i usunąć nawiasy oraz znak - przy zamianie z liczby ujemnej na dodatnią?

 

function przeciwnaL() {
            var aktualna = document.getElementById('wprowadzanie').value;
            if (aktualna.length > 0) {
                var ostatniaLiczba = parseFloat(aktualna);
                var nowaLiczba = -1 * ostatniaLiczba;
                var nowyCiag;
            if (nowaLiczba < 0) {
                nowyCiag = "(" + nowaLiczba + ")";
            } else {
                nowyCiag = nowaLiczba.toString();
            }
                nowyCiag = aktualna.slice(0, -ostatniaLiczba.toString().length)+nowyCiag;
                document.getElementById('wprowadzanie').value = nowyCiag;
            }
        }
komentarz 19 listopada przez Comandeer Guru (596,500 p.)
Nie bardzo rozumiem, czemu nawiasy są obowiązkowe i czemu to one miałyby powodować problem, skoro nie biorą udziału w konwersji liczby? Mógłbyś pokazać całość?
komentarz 19 listopada przez reaktywny Nałogowiec (38,490 p.)
Ósma linia:

nowyCiag = "(" + nowaLiczba.toString() + ")";
komentarz 19 listopada przez Kczor Nowicjusz (130 p.)

@Comandeer, cały kod?

EDIT:
Ponieważ jest to zadanie w którym są wymagane ,aby przy zamianie liczba ujemna była w nawiasach.

Kod: https://pastebin.com/CmYyG6eT

komentarz 19 listopada przez Comandeer Guru (596,500 p.)
Tak, bo u mnie ta funkcja tak na oko działa.
komentarz 19 listopada przez Kczor Nowicjusz (130 p.)
komentarz 19 listopada przez Kczor Nowicjusz (130 p.)
Wraz z CSS bo zapomniałem

https://pastebin.com/tfB9Gwji

1 odpowiedź

0 głosów
odpowiedź 19 listopada przez Comandeer Guru (596,500 p.)

Ok, błąd jest spowodowany tym, że do liczby ujemnej dodajesz nawiasy i potem parseFloat() zwraca NaN dla ciągów typu "(-4)". Nie bardzo rozumiem, czemu te nawiasy tam muszą być? Bez nich całość powinna działać tak samo dobrze.

komentarz 19 listopada przez Kczor Nowicjusz (130 p.)
Ponieważ takie mamy postawione wymagania zadania ,że liczby ,które są ujemne mają być w nawiasie
komentarz 19 listopada przez Comandeer Guru (596,500 p.)

No to w takim razie przed odpaleniem parseFloat() trzeba te nawiasy usunąć, np. przy pomocy String#replace():

str = str.replace( '(', '' );

 

komentarz 20 listopada przez VBService Ekspert (246,070 p.)
edycja 20 listopada przez VBService

Polecam użycie takiego zapisu dla  String.replace  wink

str = str.replace(/[()]/g, '');

 

lub użyć String.split

let str = 'Lorem ipsum dolor sit amet, (consectetur adipiscing) elit.';
str = str.split(/[()]/).join('');
console.log(str);

 

Podobne pytania

0 głosów
1 odpowiedź 375 wizyt
pytanie zadane 13 października 2020 w C i C++ przez kvbq Obywatel (1,490 p.)
+1 głos
2 odpowiedzi 116 wizyt
0 głosów
1 odpowiedź 133 wizyt

92,133 zapytań

140,789 odpowiedzi

317,829 komentarzy

61,457 pasjonatów

Advent of Code 2023

Top 15 użytkowników

  1. 1886p. - Łukasz Eckert
  2. 1856p. - Dawid128
  3. 1844p. - CC PL
  4. 1844p. - Marcin Putra
  5. 1818p. - rafalszastok
  6. 1775p. - Mikbac
  7. 1760p. - rucin93
  8. 1741p. - sefirek
  9. 1682p. - Adrian Wieprzkowicz
  10. 1652p. - Eryk Andrzejewski
  11. 1644p. - jaroslawroszyk
  12. 1565p. - Rafał Trójniak
  13. 1467p. - dia-Chann
  14. 1445p. - nidomika
  15. 1424p. - ssynowiec
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Uwaga - w dniach od 02.12 do 08.12 trwają Mikołajki (książki drukowane mają rabat -35%, ebooki do -45%). Zaś dodatkowy, specjalny kod zniżkowy: HELMIKOLAJ-10 dla naszych Widzów zapewni Wam oszczędność -10zł dla zamówień powyżej 70zł! Warto korzystać!

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...