Get/set variable vs normal public variable?

What is the point of using

[SerializeField]
private float m_number;
public float number{
     get{
        return m_number;
     }
     set{
          m_number = value;
     }
}

void Start(){
      m_number =10;
}

instead of the much simpler

public float number;

void Start(){
     number = 10;
}

Why would I complicate things with SerializeField and the get/set variable?

http://stackoverflow.com/questions/1568091/why-use-getters-and-setters

This topic has been discussed many times on many boards, I see no reason to leave it open for additional debate about a topic that’s well covered.