Fatti

C. (il richiedente) ha fatto costruire un edificio commerciale sul suo terreno a X. nel 1987/88. Lo studio di ingegneria A. AG (convenuto 1) ha svolto i lavori di ingegneria e lo studio di architettura e pianificazione B. AG (convenuto 2) è stato incaricato dei lavori di architettura. L'architetto D. ha agito in qualità di consulente del richiedente. Inizialmente, era prevista una costruzione in acciaio per il nuovo edificio. Tuttavia, il richiedente ha successivamente deciso di optare per una costruzione in muratura e una fondazione piana. Poco dopo, sono apparse crepe nelle facciate, che in seguito si sono allargate e moltiplicate. Dopo infruttuose trattative, le parti hanno concordato di incaricare congiuntamente l'ingegnere edile E. di redigere una perizia per determinare le cause dei danni da crepe, il tipo di riparazione e i costi di riparazione. Il 31 ottobre 1990, E. ha presentato la sua perizia, con la quale i convenuti non erano d'accordo. Con un'azione depositata l'11 marzo 1992 e successivamente modificata, il richiedente ha chiesto al Tribunale commerciale del Cantone di San Gallo di condannare solidalmente i convenuti a pagargli 1'868'600 franchi svizzeri più interessi al 5% dall'11 marzo 1992.

Legge

La Corte ha innanzitutto ritenuto che i convenuti non fossero in ritardo nell'adempimento dei loro obblighi contrattuali, ma che si trattasse di un caso di esecuzione difettosa, comportando conseguenze in termini di risarcimento danni e non di ritardo nel pagamento. Di conseguenza, le condizioni per l'assegnazione di interessi moratori non erano soddisfatte.

Tuttavia, la Corte ha ritenuto che quando il danno viene calcolato al momento della sentenza pronunciata in ultima istanza cantonale, il richiedente ha diritto a interessi compensativi sugli importi corrispondenti alle spese sostenute o alle perdite di entrate subite prima della sentenza, a causa degli effetti finanziari del…