I have a binary mixture, say ethanol at $90\%wt$ ethanol, $10\%wt$ water. According to Perry's Chemical Engineers' Handbook 9th Ed., that mixture has a density of $0.81797g/cc$ (at $20^{\circ}C$). So my $1L$ of mixture should have a mass of $817.97g$.
Now, I want to create this mixture. I know the total mass and the mass %'s, so I just multiply them out: we find that we need $736.17g$ ethanol and $81.80g$ water. Ok, so far so good. However, say all of my balances are broken, so I only have graduated cylinders to work with. Easy, just convert those masses back to volumes using their respective pure substance densities: $0.78934g/cc$ for ethanol and $0.99823g/cc$ for water.
However, doing this tells me that I should have $932.6mL$ of ethanol and $81.9mL$ of water, which adds up to a total volume of $1014.6mL$ of binary mixture, so somehow I magicked $14.6mL$ of liquid out of thin air using this conversion algorithm.
Is this due to the negative excess volume of the ethanol/water mixture upon mixing? That's my current guess, but for the life of me I'm having a hard time figuring out the math here. It seems like the change in volume should be much smaller: $10\%wt$ water in ethanol is about $10\%mol$ and there's about $4.5mol$ of water in the mixture, so based on this dataset it seems like there should only be a difference of about $3mL$. Even with all the rounding I just did, it seems like this can't be the only error source.
UPDATE: That last step was where my error was. For some reason, I calculated the excess volume based on only the number of moles of water, not the total moles of the mixture. When using the total volume of the mixture (as one should), and a new set of tables (since the old ones can no longer be accessed 4 years later), the total volume effect comes out to -14.4mL, which is nearly exactly what my calculations predicted. Thanks to Anger Density for finally narrowing down the error, and do check out Ananta's answer for a thorough breakdown of this kind of calculation.
Is there something wrong with the logic of my algorithm here? Can anyone point me to the reason I'm seeing this numerical error whenever I run this calculation?