Portál AbcLinuxu, 12. května 2025 07:30

Dotaz: maximální číslo

29.8.2005 13:04 kamilek
maximální číslo
Přečteno: 109×
Odpovědět | Admin
Jake je max cislo v linuxu, se kterym muzu normalne pracovat? Delam pocitani prenesenych dat a z 5 souboru secitam 5 cisel. Pri prekroceni urcite hranice (okolo 2 000 000 000) mi zacina scitani blbnout a ukazuje to zaporne hodnoty. Mam napr. cisla: 3278505;128697141;1767999605;186892646;209943901;4682054 a scitam je prikazem:

pom=$(($a+$b+$c+$d+$e+$f))

Vrati mi to hodnotu: -1993473444 coz je pro me jasne na nic. Da se to nejak obejit? Cpu to pak dale do rrd tools.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Luboš Doležel (Doli) avatar 29.8.2005 13:21 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: maximální číslo
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ten integer asi bude 32 bitový, takže maximální hodnota bude cca 2^31 a minimální cca -2^31.
29.8.2005 13:25 kamilek
Rozbalit Rozbalit vše Re: maximální číslo
a jak to teda mam obejit?
29.8.2005 13:25 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: maximální číslo
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co echo echo "3278505+128677141+1747999605+186892646+209943901+4682054" | bc? Nebo použít Python, který má podporu pro velká čísla už zabudovanou.
When your hammer is C++, everything begins to look like a thumb.
29.8.2005 13:36 kamilek
Rozbalit Rozbalit vše Re: maximální číslo
zkousel jsem-nejde. existuje treba deleni, ktere nevraci cele cislo? protoze kdyz dam a/b tak mi to vrati cele cislo, ale ja bych potreboval desetinne
29.8.2005 13:53 blesk | skóre: 1
Rozbalit Rozbalit vše Re: maximální číslo
A v cem to delas? Python by mel umet delsi cisla, pokud to delas v C/C++ tak si tvor promennou jako unsigned int, to pak budes mit max. velikost cisla 2^32 (asi 4G)

Pokud se jedna deleni, tak musis pouzit realny typ, tzn v C bys napsal neco jako (float) a / (float) b nebo tak nejak.. uz sem nejakou dobu neprogramoval, takze presnou syntaxi si nekde najdi...
29.8.2005 14:35 doubleZ | skóre: 24 | blog: smazano
Rozbalit Rozbalit vše Re: maximální číslo
Přesně tak to je, když máš v C hodnotu integeru, tj 2^31, tak v případě unsigned zrušíš ty záporné, tudíž dostáváš rozsah -2^31 až 2^31 vše do kladných (posuneš množinu) tudíž máš 2*2^31 kladných čísel, pro desetinná místa je typ float, což je pro pohyblivou desetinnou čárku.
29.8.2005 14:49 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: maximální číslo
To jsi mel napsat hned, že chceš dělat další matematické operace. To je skutečně lepší se na shell vykašlat a použít Python (ostatně příkazy v něm spustíš pomocí os.system(), nebo os.popen, pokud chceš zpracovávat vstup z programu).

Python se chová podobně jako C, pokud dělíš dvě celá čísla, výsledkem je taky celé číslo. To pak znamená:
$ python -c 'print 1/2'
0
$ python -c 'print 1.0/2'
0.5
$ python -c 'print 1/float(2)'
0.5
When your hammer is C++, everything begins to look like a thumb.
29.8.2005 16:22 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: maximální číslo
FTFM bc(1)
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
29.8.2005 17:09 Bubak
Rozbalit Rozbalit vše Re: maximální číslo
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pouzij long long (pokud delas v Cecku:-)).
29.8.2005 17:11 Bubak
Rozbalit Rozbalit vše Re: maximální číslo
Sorry, tak nic, prehlidl jsem ten priklad.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.