Stitch the vertices together and use UV mapping to compose your puzzle mesh. That way you will not have this visual artifact.
It's a rendering artifact not a floating point error. You often see this sort of thing when say two wall pieces that are, seemingly, perfectly aligned still show a tiny (pixel wide) gap.
Another way to solve this would be to overlap the puzzle pieces a little bit. Of course you must also take z order into account.
Hope this helps.