• 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ą.

Object Storage Arubacloud
+1 głos
193 wizyt
pytanie zadane 19 listopada 2023 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 2023 przez Comandeer Guru (601,590 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 2023 przez reaktywny Nałogowiec (41,050 p.)
Ósma linia:

nowyCiag = "(" + nowaLiczba.toString() + ")";
komentarz 19 listopada 2023 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 2023 przez Comandeer Guru (601,590 p.)
Tak, bo u mnie ta funkcja tak na oko działa.
komentarz 19 listopada 2023 przez Kczor Nowicjusz (130 p.)
komentarz 19 listopada 2023 przez Kczor Nowicjusz (130 p.)
Wraz z CSS bo zapomniałem

https://pastebin.com/tfB9Gwji

1 odpowiedź

0 głosów
odpowiedź 19 listopada 2023 przez Comandeer Guru (601,590 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 2023 przez Kczor Nowicjusz (130 p.)
Ponieważ takie mamy postawione wymagania zadania ,że liczby ,które są ujemne mają być w nawiasie
komentarz 19 listopada 2023 przez Comandeer Guru (601,590 p.)

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

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

 

komentarz 20 listopada 2023 przez VBService Ekspert (253,420 p.)
edycja 20 listopada 2023 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ź 501 wizyt
pytanie zadane 13 października 2020 w C i C++ przez kvbq Obywatel (1,490 p.)
+1 głos
2 odpowiedzi 132 wizyt
0 głosów
1 odpowiedź 166 wizyt

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,965 pasjonatów

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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...