Warum musst du überhaupt umwandeln? DAS ist der große Fehler.
Dem Oracle client ist es schnurz-piepe was die Regionaleinstellungen des Users im Betriebssystems sind.
Steht in der Registry AMERICA_AMERICAN, dann wird er das nehmen.
Du hast also in deiner Anwendung keine große Möglichkeit anhand der Windowseinstellungen auf die Oracle einstellungen zu schließen. [1]
Aber jetzt kommt der Punkt: Warum auch?
Eine Number(10,4) kann in in einer DataColumn mit ähnlicher Formatierung abgebildet werden.
SQL Statements sollten natürlich immer mit vernünftig typisierten Parametern erfolgen.
Somit sollte es für dich niemals das Problem geben, dass du in deinem Code einen Dezimalwert als String benutzen willst.
Die einzige Stelle wo das passiert ist in dem Control an das die Daten gebunden wurden.
Stört dich aber im Code nicht weiter, weil es jede Eingabe verhindert, die nicht in den Zieltypen umgewandelt werden kann.
Wie du bereits gemerkt hast, stellt das Datagrid nur die Dinge da, die du ihm als Datenquelle vorgibst, gib ihm einfach die richtigen Spaltentypen und alles ist in Butter...
[1] Nicht lange darüber wundern: Oracle hat neben extrem komplexen und ähm
coolen Features, soviele mittelalterliche und hirnrissige Macken und/oder Implementierungslücken, es würde Monate dauern die alle aufzulisten...