an IFFT won't necessarily produce exactly the same data as your input to the FFT,
Good point. In fact, most of them don't.
If you apply the N point discrete Fourier transform in the forward and then the inverse direction, the original data are returned, but multiplied by a factor of N (unless the code explicitly takes this factor into account).
There is no standard about how to deal with that factor. In some cases N divides explicitly into the reverse transform, but in other definitions (like that used in Mathematica), the forward and reverse transforms are multiplied by 1/sqrt(N), so that forward and reverse return the original data.
This is discussed in Discrete Fourier transform - Wikipedia (scroll down to "unitary DFT").