To do this automatically would require an event macro:
Put this in your worksheet code module (right-click the worksheet tab
and choose View Code):
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Const cdSCALE As Double = 0.5 'change to suit
With Target
If .Count = 1 Then
If .Address(False, False) = "E5" Then 'change E5 to suit
On Error Resume Next
Application.EnableEvents = False
.Value = Application.Round(.Value * cdSCALE, 2)
Application.EnableEvents = True
End If
End If
End With
End Sub
I used Round() since you're talking about currency. If you want
half-pennies, use
.Value = .Value * cdSCALE
instead.
Note that format of cells (other than Text) doesn't affect how inputs
are parsed or stored.