最近的新工作,並得到了有關客戶的軟件錯誤的問題。錯誤是「從字符串'0.5'轉換爲類型'雙'無效。」必須String.format()聲明文化不變性?
我相信我找到了違規行。因爲客戶在法國,並且他的電腦設置全部使用法語(編號系統,語言......),所以「0.5」不能被鑄造成法語版本的「0,5」法語系統沒有小數點在他們的數字任何地方所以,如果string.format看到「0.5」,它不會知道該怎麼做,因爲沒有'。'字符在法國文化環境中被鑄造成雙倍。我在這裏嗎?
context.Append(String.Format("{0} {1} exceeds fine {2} limit of {3:N0}", _
context.OccupancyState, context.Size, _
Reg.Alert.ToLower, context.Limit))
其中context.Size包含「0.5」字符串。
Format.string是否考慮到文化設置,或者我在這裏丟失了什麼?
編輯:
剛在法國的窗口VM和(不幸),它能夠解析爲「0,5」成功......所以,也許這是沒有問題嗎?
'String.Format'不_parse_。它根據您使用的類型格式化字符串。如果你傳遞一個字符串,它將不會被格式化。所以或者這是不正確的:_「...其中context.Size保存着」0.5「字符串」_或this:_「,它能夠成功地將它解析爲」0,5「。 –
字符串「0.5」是如何在法國計算機中結束的?爲什麼大小存儲爲字符串而不是數字?該語句不會另外將context.Size從一個字符串轉換爲double,因此您還沒有發現問題。 –
對不起,我還是新進入這個軟件,它似乎做了很多奇怪的事情:( – Cerealkiller050