# Numbers in Lua

Share the page with

# Numbers in Lua

Lua uses two alternative representations for numbers:

• Double precision, 64-bit, floating-point numbers
• 64-bit, integer numbers

Note that floats, reals, or double-precision implies 64-bit real numbers in Lua

Declaring real numbers

a=1.0
a=1.0e+0
a=1.0e0
a=1.0E0
a=1.0E+0


Declaring integer numbers

a=4


Numerals with a decimal point or an exponent are considered floats; otherwise, they are treated as integers.

The type of real or integer number is always number in Lua. In this way integers and floats can be compared in Lua as shown below.

2 == 2.0 --> true
-6 == -6.0 --> true


We can also mix integers and reals in mathematical operations.

1 + 1 --> 2
1 + 1.0 --> 2.0
1.0 + 1.0 --> 2.0
1.0 * 2 --> 2.0


Division of two integer numbers is a real number as shown below

3/2 --> 1.5
3.0 / 2 --> 1.5
3.0 / 2.0 --> 1.5


For integer division, Lua provides // operator, which works as follows.

3//2 --> 1
1//2 --> 0
-9 // 2 --> -5 which is floor(-4.5)


Modulo operator is given by %, which works as follows.

3 % 2 --> 1
4.0 % 1.2 --> 0.4


## Relational operators

• > greater than
• < lesser than
• <= lesser than and equal to
• >= greater than and equal to
• == equal
• ~= not equal

## Math library

Lua math library contains several functions. Some of these functions are given below.

math.random()
math.randomseed()
math.floor()
math.ceil()


## Conversion

We can convert real to integer by using a function called math.tointeger. Note that this function can be used only when a real number has integer representation. See the example given below.

math.tointeger(1.0) --> 1 works
math.tointeger(1.2) --> error, does not work

Share the page with