Stránka 1 z 1
Násobení velkých čísel
Napsal: 18 lis 2020, 16:14
od Ludek
Zdravím,
tak jsem narazil... úplná jednoduchost, ale pro mne neřešitelná.
Násobení velkých čísel... Jak deklarovat jejich typ - s tím se trápím.
příklad :
mám číslo a (v rozsahu 0 až 5000)
mám číslo b (v rozsahu 0 až 5000)
a potřebuji výsledek jako číslo c ( tedy ten bude v rozsahu 0 až 25 milionů)
díky za radu.
Re: Násobení velkých čísel
Napsal: 18 lis 2020, 16:33
od pavel1tu
https://www.arduino.cc/reference/en/lan ... ypes/long/
Kód: Vybrat vše
long x = 5000L;
long y = 5000L;
long xy = (long) x * (long) y;
//nebo přímo čísla
long xy = 5000L * 5000L;
Pro ještě větší čísla pokud nepůjdeš do mínusu "unsigned long" (UL)
Re: Násobení velkých čísel
Napsal: 18 lis 2020, 19:21
od jankop
Řek' bych:"Na mý gusto nějak přetypováno! X a Y jsou už long."
Re: Násobení velkých čísel
Napsal: 18 lis 2020, 19:25
od pavel1tu
jankop píše: ↑18 lis 2020, 19:21
Řek' bych:"Na mý gusto nějak přetypováno! X a Y jsou už long."
No, ale mne to někdy bralo jako long a někdy ne, v jednom programu. Ale mám tucha, že to bylo násobení int a long možná, pak jsem to opravdu přeehnal.
A nebo si to špatně pamatuji, což je v mém případě hodně pravděpodobné
Re: Násobení velkých čísel
Napsal: 20 lis 2020, 14:53
od Ludek
Pánové díky... ještě maličkost...
jak to upravit, když x a y jsou int (jsou to výsledky z předchozích operací)
Re: Násobení velkých čísel
Napsal: 20 lis 2020, 15:17
od jankop
No to je právě to přetypování, to jsou ty kulaté závorky s uvedením typu, na který chci následující výraz převést.
Kód: Vybrat vše
int x,y;
...
long xy = (long) x * (long) y;
respektive
Kód: Vybrat vše
int x,y;
long xy;
...
xy = (long) x * (long) y;
Re: Násobení velkých čísel
Napsal: 20 lis 2020, 15:29
od Caster
Hele, není mi jasný, kde jsi vzal zrovna hodnotu 5 000. Binárně je na její uložení potřeba 12,29 bitů (2^12,29=5 000) a nevypadá to, že jde o výstup nějakého převodníku.
Re: Násobení velkých čísel
Napsal: 20 lis 2020, 16:24
od Ludek
Dostal jsi mě
jasně že 4096 . jdu to zkoušet.