What is the problem?
Sounds pretty simply to give your software a version number but looking to it in detail it is not that simple any more. Especially if a whole team of people is working on multiple releases and the software releases are used by customers in productive environments there should be some thoughts spent on it.
So what to do?
There is one (obvious) but great concept called semantic versioning done by a great guy. In general your version numbers look like
So we are using “major.minor.patch-pre+build”.
Get the full stuff over here: