6 years (I just checked!) after Christian advised me to use the new custom marking algorithms instead of JavaScript I've started doing it and have found some strange behaviour. I've made an example question below.
Basically the intention of the marking algorithm is to remove a mark if the student answer is correct to one degree of of accuracy less than being asked for. In the example question, 3.14 is obviously correct to 2 d.p. and would get full marks whereas anything that rounds to 3.1 (i.e. 1d.p.) would get a mark removed. This appears to work for any numbers between 3.05 and 3.15 as desired except if I enter the exact answer with a zero on the end e.g. 3.140, this triggers the precision warning (I'm fine with that) but also removes a mark. I have the partial credit for precision set to 100% as I don't want to penalise for this.
Ignore the references to scientific answers in the algorithm, it's there for future addition but we don't have questions that require it at the moment.