La differenza fra un single e un double non sta nel numero di decimali, ma nella precisione (Single con virgola mobile a precisione semplice, Double con virgola mobile a precisione doppia).
E' poi anche vero che un double contiene più decimali ma questo per lo spazio riservato in memoria (4 byte single, 8 byte double).
Il numero di decimali lo decidi tu arrotondando con la Round:
codice:
MsgBox CStr(Round(2396.95 - 2311.55, 1))
Inserendo i dati così
MsgBox (2396.95 - 2311.55)
siccome non sono stati definiti, è come se usassi dei variant che in caso di numeri hanno lo stesso intervallo di un double.