我有一個C#表單應用程序。作爲其功能的一部分,它以字符串格式向文件寫入雙值,其中一些是double.Infinity。C#:處理Windows 10上Convert.ToDouble('Infinity')的格式異常
還有另一部分應用程序從文件讀取這些值並將它們轉換回雙倍。
當在Windows 7上執行寫入值部分並在Windows 10上讀取相同的文件時,在轉換'無窮大'時出現格式異常。它顯示默認(us-en)文化使用的符號在Windows 8和10之間更改。
在應用程序中有很多Convert.ToDouble()實例,並通過try-catch或使用double.tryParse()不是一個可行的解決方案,因爲它需要在許多項目中進行更改。
有沒有什麼解決方法可以避免這種格式異常問題?
由於提前,
卡皮爾
那麼,這是一個滴答作響的定時炸彈。不是唯一的問題,例如,當程序跨越小數點以逗號書寫的邊界移動時,數據變成亂碼。如果您不想更改解析代碼以使用帶有NumberFormat參數的Parse/TryParse重載,就像您應該那樣,那麼您必須使用自己的文化來更改Thread.CurrentCulture屬性。使用您的首選Negative/PositiveInfinitySymbol值的自定義NumberFormatInfo。 –
感謝漢斯。在初始化應用程序時定製當前文化,設置預期無窮大常量;它已經工作。 –