Prodded by the "Working on a flattened Sphere trader" thread, I've pulled out my code for calculating the number of decks a ship should have. This is from my Space Opera starship design app.
// Number of decks from 100 to 1000000 tons
Var decks As Double
Select Case Ships(CurrentShip).Hull.Mass
Case Is < 500
decks = 1
Case Is < 1000
decks = 2
Case Is < 2500
decks = 3
Case Is < 10000
decks = 4
Case Is < 15000
decks = 5
Case Is < 37500
decks = 6
Case Is < 50000
decks = 7
Case Is < 62500
decks = 8
Case Is < 75000
decks = 9
Case Is < 137500
decks = 10
Case Is < 150000
decks = 11
Case Is < 350000
decks = 12
Case Is < 400000
decks = 13
Case Is < 550000
decks = 14
Case Is < 600000
decks = 15
Case Is < 875000
decks = 16
Case Is < 1000000
decks = 17
Else 'Case 1000000
decks = 18
End Select
// Configuration modifier
Select Case Configuration 'Cylinder is * 1
Case "Sphere"
decks = decks * 3.0
Case "Cube"
decks = decks * 2.6
Case "Flattened Sphere"
decks = decks * 1.5
Case "Slab"
decks = decks * 0.65
Case "Modular"
decks = decks * 0.85
End Select
decks = Round(decks)
Return decks