2011-11-26 46 views
0

我遇到了C#(VS2010)中的類型轉換問題。如何將十進制或浮點值中的「,」替換爲「。」?

我需要在我的數據庫中插入一些行,但在C十進制數類型#像這樣:1,34.

在SQL字符串,它看起來:「-------- 1,34 ----- ----「,但我需要這個字符串看起來像:」-------- 1.34 -------「。

如何將" , "更換爲" . ". 謝謝。

回答

-6

如果你只想用「。」將數據插入數據庫put字符串。 (替換(',','。'))

+1

有趣的是,如果有一個文字字符串插入含有','那麼它呢? –

+5

如果數字是'123,456,789.00' – username

+1

怎麼辦?不明白爲什麼OP將該答案標記爲解決方案,因爲它與「全球化」標籤沒有任何共同之處。 – mj82

0

這不依賴於C#,而是依賴於您正在使用的默認文化。 您需要使用您選擇的文化來設置小數點的格式,請參閱this尋求幫助

2

只需在將數字格式化爲字符串時指定備用文化。

double value = 3.14D; 

string formatted = String.Format(CultureInfo.InvariantCulture, "{0:F2}", value); 
+0

爲了我不建議使用stringformat來創建sql命令。 –

+1

@FelicePollano - 我同意,我只是回答他的具體查詢。 –

18

使用命令參數生成DB命令,你會不會在所有有這樣的問題,而且它是推薦的方式。見this to have an example。你幾乎不應該自己設置sql字符串的格式,因爲你總是會遇到問題,如果你把你的sw移到另一個db文化中呢?潛在的查詢注入怎麼樣,等等。

0

您可以設置NumberFormatInfo.NumberDecimalSeparator任何CultureInfo的使用:

// Gets a NumberFormatInfo associated with the en-US culture. 
    NumberFormatInfo nfi = new CultureInfo("en-US", false).NumberFormat; 

    // Displays a value with the default separator ("."). 
    Int64 myInt = 123456789; 
    Console.WriteLine(myInt.ToString("N", nfi)); 

    // Displays the same value with a blank as the separator. 
    nfi.NumberDecimalSeparator = " "; 
    Console.WriteLine(myInt.ToString("N", nfi)); 

這是從MSDN

爲例
2

如果你在你的數據庫小數,你必須在你的代碼十進制你不需要任何轉換,你都準備好了。

但是我怕你覺得這是一個小數

「3.14」

它不是。它是一個保存十進制表示的字符串,IOW是可視化的人類數字。

如果您需要轉換,它是一種符號,您可以將字符串推送到數字,或將數字推送到字符串。第二種意思是你有一個破碎的設計,首先你解析一些外部來源的混亂輸入 - 在這種情況下,我的首選是創建一個文化對象,然後根據混亂的來源設置其功能,例如:

culture.NumberFormat.NumberDecimalSeparator = "."; 

然後在轉換數據時使用此對象。

0

查看此前的答案。

Stack Overflow Globalised Number Formatting

但是你不應該這樣做只是在數據庫中得到一個數字。 如果使用參數化查詢

在數據庫中,數字只是一個小數。如果我在英國寫一個應用程序,當它轉換爲字符串顯示時,我看到9,999.999你寫了一個你看到9.999,999。因此,看看你爲什麼需要混合文化,看看你是否可以消除這種需求,非常罕見,你實際上需要這樣的事情,甚至不需要這樣的事情。因爲它被設計成可以擺脫以前窗戶化身造成的所有問題。

相關問題