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:
Inserendo i dati cosìcodice:MsgBox CStr(Round(2396.95 - 2311.55, 1))
siccome non sono stati definiti, è come se usassi dei variant che in caso di numeri hanno lo stesso intervallo di un double.MsgBox (2396.95 - 2311.55)