Well, ‘2.5’ is not in BERT’s vocabulary.
Building a tokenizer is an integral part of building a BERT model.   The way the model learns depends on the tokens it uses.
You have 3 options.

Change your pre-processing
Create your own BERT with your own vocabulary
Write some post-processing to re-align the NER tags

Do you have enough data to train a BERT model from scratch?
Do you definitely need to keep all your different numbers, or could you substitute a known token for each number before you pass the text to BERT?
Chris McCormick has some nice explanations of tokenization, in blogs and you-tube videos.  See this blog for example https://mccormickml.com/2019/05/14/BERT-word-embeddings-tutorial/ 15