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

Modulo (%) javascript - czy działa tak jak myślę?

Object Storage Arubacloud
+2 głosów
401 wizyt
pytanie zadane 19 września 2021 w JavaScript przez Doge Gaduła (3,370 p.)

Witam, próbowałem napisać funkcję z pomocą modulo, lecz nie zadziałało to tak jak chciałem, ponieważ zwiększa się pewna liczba i chciałem, aby po przekroczeniu liczby 40, brało resztę z dzielenia, np:

kiedy mamy liczbę 16 to zostaje 16, a kiedy mamy liczbę 56, to dostajemy 16. Robiłem to tak:

liczba = 56
if(liczba%40 == 16) --> false
liczba = 16
if(liczba%40 == 16) --> true

I zwiększając liczbę o 40, chciałbym zawsze otrzymywać true, lecz jak przekroczy 40, to nie działa. W jaki sposób można to naprawić?

2 odpowiedzi

+2 głosów
odpowiedź 19 września 2021 przez Wiciorny Ekspert (269,710 p.)
wybrane 19 września 2021 przez Doge
 
Najlepsza
16%40 to ma być reszta z dzielenia,
W obu przypadkach jest to prawda, reszta z dzielenia 16/40 ...

56/40 - > daje reszty 16==16.

natomiast 16/40 ->  też daje tyle reszty bo  40* 0 = > 0  stąd zostaje 16 reszty.

tak działa operator modulo
https://www.khanacademy.org/computing/computer-science/cryptography/modarithmetic/a/modular-exponentiation
tu masz dobry artykuł.
2
komentarz 19 września 2021 przez Doge Gaduła (3,370 p.)
Jednak rzeczywiście działa, tylko kod jest trochę bardziej rozbudowany i przy mnożeniu nie dałem już modulo i dlatego mi wychodziły za duże wyniki.
2
komentarz 19 września 2021 przez Wiciorny Ekspert (269,710 p.)
:) też pamiętaj %- modulo i inne operacje arytmetyczne, to elementy niezależne od języków w każdym innym języku % - działa tak samo.
komentarz 20 września 2021 przez mokrowski Mędrzec (155,460 p.)

:) też pamiętaj %- modulo i inne operacje arytmetyczne, to elementy niezależne od języków w każdym innym języku % - działa tak samo.

Chyba nie bardzo...

python3 -c "print(-11 % 2)"
1
#include <iostream>

int main() {
	std::cout << (-11 % 2) << '\n';
}

Wynik: -1

https://en.wikipedia.org/wiki/Modulo_operation#In_programming_languages

komentarz 20 września 2021 przez Wiciorny Ekspert (269,710 p.)
ale ja mówię o arytmetyce modulo, a nie to że język "ucina wartości w zależności od konwersji" mówie o mechanizmie działania modulo i czym jest.
komentarz 20 września 2021 przez mokrowski Mędrzec (155,460 p.)

Przeczytaj główny link bo to nie jest oczywiste.

Jeden z wyjątków z wiki:

In number theory, the positive remainder is always chosen, but in computing, programming languages choose depending on the language and the signs of a or n.

 

komentarz 20 września 2021 przez Wiciorny Ekspert (269,710 p.)
ale ty rozumiesz, że mi chodzi o operacje modulo - a nie proces odcięcia wartości na bazie znaku czy konwersji wartości liczbowej...
mi chodzi o matematyczną operacje a nie następujący o tym proces.
komentarz 21 września 2021 przez mokrowski Mędrzec (155,460 p.)

Drugie zdanie:

In computing, the modulo operation returns the remainder OR signed remainder of a division, after one number is divided by another (called the modulus of the operation).

Przeczytaj jeśli chcesz to zrozumieć. Choć drugie zdanie :-/ Stąd też to nieprawda że "%- modulo i inne operacje arytmetyczne, to elementy niezależne od języków w każdym innym języku % - działa tak samo".

+2 głosów
odpowiedź 19 września 2021 przez SzkolnyAdmin Szeryf (86,360 p.)
To cały kod? Bo ten powinien działać bez problemu - w obu przypadkach warunki są prawdziwe.
komentarz 19 września 2021 przez Doge Gaduła (3,370 p.)
Jednak rzeczywiście działa, tylko kod jest trochę bardziej rozbudowany i przy mnożeniu nie dałem już modulo i dlatego mi wychodziły za duże wyniki.

Podobne pytania

–1 głos
3 odpowiedzi 1,547 wizyt
pytanie zadane 1 maja 2019 w Rozwój zawodowy, nauka, praca przez Kubs Mądrala (5,190 p.)
0 głosów
0 odpowiedzi 243 wizyt
pytanie zadane 2 kwietnia 2022 w C i C++ przez Krzysztofs1234 Użytkownik (890 p.)
0 głosów
1 odpowiedź 183 wizyt
pytanie zadane 2 lipca 2020 w Inne języki przez krzysiek852 Nowicjusz (170 p.)

92,556 zapytań

141,404 odpowiedzi

319,560 komentarzy

61,942 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!

...