OK, I’ll try - others can jump in if I get anything wrong.
The vast majority of computers today store numbers, instructions, text, etc in binary powers of 2, in other words base 2 representation. So the first bit of a binary byte represents 1, the second bit 2, third bit 4, fourth bit 8, and so on. Depending upon how many bytes you use to store a whole (integer) number dictates the largest number you can store.
So, in a single byte the biggest number you can store is 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255. If you had two bytes you could store a bigger number (1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 + 256 + 512 + 1024 + 2048 + 4096 + 8192 + 16384 + 32768 = 65535), three bytes an even larger number and so on. So, no inaccuracies and job done. Either the hardware designer, or the software programmer can decide how many bytes are used to store the number.
Binary is very convenient for electronic computers, because each bit only has two states - 0 or 1 - beautifully represented by no voltage or a positive voltage in a binary bit circuit.
For a moment lets assume our computer is a base 10 computer, not a base 2 computer - so each bit stores a power of 10 (1, 10, 100, 1000, 10000, 100000 and so on). Now each bit can have 10 states - the first bit 0 to 9, the second bit 10 to 99 and so on. Again, for whole numbers, not a problem - depending upon how many bits you use you can store any whole number.
But here’s the rub - whatever number of bits is chosen to store the whole number, in whatever base, it obviously has to be a fixed number of bits (or bytes). It cannot be an infinite number. The problem with floating point operations is when you are dealing with fractions.
In our base 10 computer, lets consider a simple sum - 1 divided by 3. We all know the answer, its one third. If we multiply one third by 3 we get back to 1 right?
But our base 10 computer can’t do that because it has to express and store everything as a decimal number. When it tries to divide 1 by 3 it gets 0.333333333333333333 (and so on forever - its called ‘recurring’). And that’s a real problem because we have to store that decimal number in a fixed number of bits, and you cannot store a recurring decimal fraction in a fixed number of bits.
So what to do?
Well there are only two solutions - you either truncate to x decimal places (e.g. 0.33333 to five decimal places, or you round up or down (e.g. 0.33334)). But whatever you do, the answer is going to be inaccurate (either wildly inaccurate if you truncate to, say 0.3, or slightly inaccurate if you truncate to 0.3333333333333333333333333333333333333). The more decimal places you work to (or number of bits you have to store the decimal number), the more accurate your answer to the sum is going to be.
Now take your truncated decimal and multitply it by 3. You should get back to 1 right? But you won’t, you’ll only get back to 0.99999. The more you keep on dividing and multiplying, the more inaccurate the answer will become. So, if you are calculating a missile trajectory and target that might not be a good thing!
But here’s why @poetaster’s ask is a good example. Although the results of doing floating point math on a computer is inaccurate and results in errors, it is neither random, nor unpredictable. If you ask a Base 10 computer to divide 1 by 3 and truncate to 5 decimal places - you’re always going to get 0.33333, and not 0.32333, or 0.33334, or whatever. Because of these inaccuracies in floating point math, and as @poetaster says, programmers have been coding in bodges and workarounds for years to cope. If these inaccuracies were random and unpredictable then you wouldn’t be able to do these things with any degree of success.
But why? the concept of a ‘temperature’ variable in an LLM is a human designed concept to moderate (or not) the ‘creativity’ of the LLM’s output. The point here is that the LLM still does not operate in a random way (but may look like it does) and the output is ‘human unpredictable’ only in so far that the algorithms of the inference engine are so many and so hugely complicated that it becomes a mammoth (and probably pointless) task to follow all of the reasoning pathways and predict what the output might be.