Es ist definitiv so das der PDO Treiber für MSSQL hier falsche Werte zurückbringt.
Nein! '0.1' und die alternative Schreibweise '.1' repräsentieren den gleichen Zahlenwert, nämlich 1/10. Ergo kann keine der Schreibweisen gegenüber der anderen falsch sein. Es ist Dein Job als Programmierer für eine ordentliche Darstellung zu sorgen.
Genau das versäumen letztendlich auch die "Programmierer" an der Stelle, wo Du glaubst, dass dort dort der angebliche Fehler bestätigt wird. Die verwenden nämlich eine unformatierte Dezimalzahl als String, konkret als Bezeichner eines Hashes und überlassen die (implizite) Umwandlung einem Treiber, was natürlich auf Grund der zahllosen Möglichkeiten, eine Dezimalzahl als String darzustellen, zu "unerwarteten" Ergebnissen führt.
Notwendig ist es also, die Dezimalzahl zu einem String zu konvertieren. Das geht schon bei der Abfrage.