user ha scritto: > Hi i check the overflow of variables and there is something i dont > understand. > > My system is > > u...@ubuntu-desktop:~$ cat /etc/*release* > DISTRIB_ID=Ubuntu > DISTRIB_RELEASE=10.04 > DISTRIB_CODENAME=lucid > DISTRIB_DESCRIPTION="Ubuntu 10.04.1 LTS" > > Linux ubuntu-desktop 2.6.32-25-generic #45-Ubuntu SMP Sat Oct 16 > 19:52:42 UTC 2010 x86_64 GNU/Linux > > > > I have this small code > ----------------------------------- > ' Gambas class file > PUBLIC SUB Form_Open() > > DIM bVar AS Boolean = TRUE > DIM iNum AS Byte = 255 > DIM iA AS Short = 32767 > DIM iRoads AS Integer = 2147483647 > DIM iBig AS Long = 9223372036854775807 > DIM iArea AS Single = 1.7014118E+38 > DIM fPi AS Float = 8.98846567431105E+307 > > bVar += 1 > iNum += 1 > iA += 1 > iRoads += 1 > iBig += 1 > iArea += 1 > fPi += 1 > > PRINT bVar > PRINT iNum > PRINT iA > PRINT iRoads > PRINT iBig > PRINT iArea > PRINT fPi > > END > ----------------------------------- > > And i get the following result > > False > 0 > -32768 > -2147483648 > -9223372036854775808 > 1.701411834605E+38 > 8.988465674311E+307 > > > My question is why the Single and Float do not overflow? > Because they should not overflow, I think. "Real" numbers (in the IT sense: "float" if you prefer ) are not discrete numbers, they have a limited precision; a single bit pattern in a float corresponds to infinite numbers in the real world. When you add a very small quantity to a float (and "1", compared to 1E+38, is very small), you simply tell it to store a different number, which has the same bit representation. If a float would overflow, it would cease its main reason to exist: in most situations you *do* want it to behave so. You could add a bigger number to make it overflow: you should add a number big enough to fall in the precision bits of the mantissa. A normal float has perhaps 6/7 digits of precision; to choose a comparable a number, you should choose something like 1E+31 (this "1" falls in the digits of precision of 1E+38). But! Even in that case, the number should not overflow, but raise an error (overflow error). This last thing depends on implementation of the floating point by the host computer.
Regards, Doriano ------------------------------------------------------------------------------ Achieve Improved Network Security with IP and DNS Reputation. Defend against bad network traffic, including botnets, malware, phishing sites, and compromised hosts - saving your company time, money, and embarrassment. Learn More! http://p.sf.net/sfu/hpdev2dev-nov _______________________________________________ Gambas-user mailing list Gambas-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gambas-user