It's fine except that state 3 is not final and shouldn't loop. (Also, I don't see your whitespace and operator rules, but the diagram looks plausible.)
The issue with state 3 is that:
8.
does not match either \d+
nor \d*.\d+
; the former because of the .
and the latter because it insists on at least one digit after the .
. Consequently, state 3, which is where you are after reading 8.
, is not final. Once it gets another digit it goes to state 4 (so no loop) which is correctly final.
I would have written state 1 with one loop, instead of two, but I don't suppose it makes any difference. Also, the semantic label under state 6 (not final) should go under state 7 (final). (Oh, and it wouldn't hurt to label the start state, although it was obvious in the end.)
HTH.