The correct way to enter a number in the TCalcEdit is to set the AsInteger or AsFloat property:
CalcEdit1.AsInteger := 2;
// or
CalcEdit1.AsFloat := 3.14;
When you enter the number as string via the Caption or Text property you can enter anything, and this is very confusing: CalcEdit1.Text = 'xyz' is detected as an invalid number, and value 0 is assumed, but still the input text is displayed and there is no error message.
You entered the value '3,333.33' in the Text property. Although Lazarus supports the thousand separator, it is meant only for output, i.e. conversion of a number to string. AFAIK there is no built-in method which accepts a thousand separator for input (conversion from string to number). Therefore '3,333.33' is not considered to be a valid number.