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

JS wychodzą mi złe wyniki a na kalkulatorze dobre. Za duże liczby?

Object Storage Arubacloud
+1 głos
400 wizyt
pytanie zadane 17 maja 2021 w JavaScript przez Adam Kowalski Użytkownik (630 p.)
Cześć!

Wychodzą mi złe wyniki w js. Na kalkulatorze wszystko działa, natomiast nie wiem o co chodzi z tym językiem:

Mam obliczenia: (2 do potęgi 13)% 77 Tu powinno wyjść 30 i tak wychodzi.

Natomiast potem musze zrobić takie obliczenia:

(30 do potęgi 37)%77 : tu kalkulator mówi 2 i tak powinno wyjść, natomiast js mówi 46...

Podejrzewam, że js nie ogarnia za dużych liczb, ale jeżeli kalkulator z Windowsa ogarnia, a język programowania nie to chyba trochę wstyd? Wiecie jak operować na takich większych liczbach

Z góry dziękuję za pomoc
komentarz 17 maja 2021 przez Oscar Nałogowiec (29,320 p.)
Może zamiast liczyć na siłę tak wielkie liczby by dostać wynik w zakresie <0,76> użyć lepiej trochę matematyki.

1 odpowiedź

0 głosów
odpowiedź 17 maja 2021 przez niezalogowany
komentarz 17 maja 2021 przez Adam Kowalski Użytkownik (630 p.)

Niestety jest problem z tym bigIntem sad. Mimo wszystko nie mam pojęcia z czego zrobić ten bigInt tak jakby. Spróbowałem ze wszystkiego co mogę ale nie pomogło. Co zrozumiałem z tego artykułu, to to, że można przypisać bigInt do liczby - lecz już nie ma podanej informacji czy da się przypisać do zmiennej zmiennej. Na pewno nie można dodać n na końcu zmiennej bo wychodzi nowa nazwa. Mój program bierze na samym początku dwie liczby od użytkownika, a potem cały czas te liczby przekształca w różnych zmiennych. 

komentarz 17 maja 2021 przez Adam Kowalski Użytkownik (630 p.)


Co ciekawe użyłem BigInt'a na obliczeniu potęgi i też jest złe potęgowanie. Może nie są to za duże liczby tylko ten Math.pow() nie umie potęgować ... Zaznaczyłem dwa miejsca gdzie liczby już się różnią 

komentarz 17 maja 2021 przez niezalogowany
pokaż swój kod, i co wypluła consola
komentarz 17 maja 2021 przez adrian17 Ekspert (344,860 p.)

BigInt(Math.pow(30, 77))

No tak, bo najpierw robisz potęgowanie na liczbach zmiennoprzecinkowych (co daje niedokładny wynik), a potem robisz z niego BigInta, co nie zwróci utraconej precyzji.

Trzeba zrobić potęgowanie od razu na BigIntach:

>>> BigInt(30) ** BigInt(37)

// lub po prostu:

>>> 30n ** 37n

 

Podobne pytania

+1 głos
1 odpowiedź 554 wizyt
pytanie zadane 23 października 2021 w PHP przez stanislawruszkowski Obywatel (1,310 p.)
0 głosów
1 odpowiedź 746 wizyt
pytanie zadane 2 lutego 2019 w Offtop przez jegor377 Stary wyjadacz (13,230 p.)
0 głosów
1 odpowiedź 891 wizyt

92,576 zapytań

141,426 odpowiedzi

319,650 komentarzy

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

...