This is perfectly normal for both your questions.
The memory frequency detection circuitry is not likely to be completely precise as there is no reason for it to be, you can buy frequency counters that can be highly accurate but high levels of accuracy is not even vaguely necessary for a computer. All you really need to know is that the frequency is "in the ballpark" of what you are supposed to be getting. Getting a highly accurate measurement is expensive as is generating a highly accurate clock in the first place.
Most computer components can deal with some slight clock drift and your 100kHz (0.1MHz) difference is more likely to be due to measurement than anything else, the actual drift is likely to be quite insignificant, especially as all the components that use that clock will be synchronised and simultaneously drifting at the same time so will not notice such a tiny change in clock rate.
As to why you see 400MHz when you have "800MHz" RAM, this is because the RAM is DDR RAM. DDR RAM, also known as Double Data Rate RAM transfers two pieces of data per clock, so while the actual clock rate is 400MHz, the "effective" clock rate is 800MHz. Calling it 800MHz RAM is a slight misnomer as it is not the actual frequency of the RAM, but it is quite common these days.
To clarify DanMans comment DDR2 memory is slightly more interesting in that the internal clock rate of a DDR2 400MHz module is actually half that of the external clock provided by the system so it effectively runs at 200MHz, meaning that the data that gets pushed out is effectively "quad-pumped" from the memory chips and synchronised to the 400MHz external clock to give the 800MHz effective data rate. (you can see more on the Wikipedia page DDR2 SDRAM: Specification_standards.