Regular hexagonal grid

I need to create a precise grid of regular hexagons. Creating a single polygon and duplicating it is problematic because the XY dimensions do not correspond to the diameter (only the X does); and then repeating the polygon is problematic because the XY positioning is also imprecise. Any ideas for a better way to do this with hexagons, or with any tessellating polygon for that matter?