2014-01-30 54 views
1

我剛剛經歷了一個非常奇怪的問題,我希望有人能解釋爲什麼會發生這種情況?C#瞭解十進制分隔符問題(雙倍)

我有一個應用程序,作爲本地系統帳戶下的Windows服務運行。 當運行windows服務時,呼叫.ToString()的兩倍說515.45,它返回515,45。 儘管我的區域設置被設置爲使用.作爲分隔符,而不是, 但是,通過Visual Studio運行精確的代碼段時,它會正確返回515.45

我想了解爲什麼小數點分隔符會通過VS和通過Windows服務不同?

我正在運行Windows 8.1 Pro。地區設置爲英語美國,地點設置爲南非。

+0

Windows版本?服務通常在與登錄的帳戶不同的帳戶上運行... – Mr47

+0

每個用戶和系統都有區域設置。他們不一定是一樣的。 –

回答

1

這是因爲該服務在與用於運行Visual Studio的用戶不同的用戶下運行。

您可以將您的文化設置複製到control panel中的系統帳戶(我不知道這是否在Windows 8中進行了更改,但我不這麼認爲)。