This is a great suggestion. Currently, the only column in the Device State Table that sorts by the underlying data (rather than the rendered string) is the Timestamp column.
At this time, the only workaround I can think of would require reformatting the underlying data (adding leading/trailing zeros to pad the numbers so that they’re all the same length). I’m assuming this isn’t a viable solution for your use-case.
I’ll file a feature request and follow up on this thread if I have an update.
I was able to reproduce your issue, and I think I have a work around for you. In the cell template of your attribute column try adding {{ format value 1 }} instead of just the default which is {{ format value }}.
I think the reason the sort is messed up is because of the commas. You are sorting by strings and not by numbers. So if you can go without the commas, doing {{format value ‘.2f’}} will allow you to have the decimal control and the sort.