簡體   English   中英

將文本框中的數字轉換為浮點C#

[英]Convert number in textbox to float C#

我有接受數字的文本框。 這些號碼將保存在數據庫中。 當我輸入2,35之類的數字並轉換為float並發送給數據庫時,由於數據庫只接受帶點的數字,例如2.35,因此出現錯誤

float num = float.Parse(textBox1.Text);

num仍然是2,25

如何處理? 我已經嘗試過CultureInfo.InvariantCulture但我從未得到想要的東西

您可以嘗試以下方法:

float.Parse(textBox1.Text.Trim(), CultureInfo.InvariantCulture.NumberFormat);

我希望這可以解決問題。

最簡單的方法是將“,”替換為“。”。 在像:

float num = float.Parse(textBox1.Text);
string stringValue = num.ToString().Replace(',', '.');

然后將“ stringValue”發送到數據庫。

希望對您有所幫助。

用這個:

CultureInfo.CreateSpecificCulture("en-US");

那時我有同樣的問題,上面的代碼解決了

num2,25因為它是根據您文化顯示給您 如果您使用通常的機制(即帶有參數的預備語句),它將被正確地傳遞到數據庫。 如果您堅持手動將SQL粘合在一起,則一定要使用InvariantCulture格式化數字,但通常不要這樣做。

這是一個普遍的全球化問題。 您需要定義的是一種單一的區域性,用於存儲數據本身,因為您將其存儲為字符串值。 然后,使用該區域性進行所有數據輸入和處理。 在我們的代碼中,我們有幾個看起來與此類似的塊,以便處理多元文化的數學和數據顯示:

//save current culture and set to english
CultureInfo current = System.Threading.Thread.CurrentThread.CurrentCulture;
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");

//Do Math and Data things

//restore original culture
System.Threading.Thread.CurrentThread.CurrentCulture = current;

這樣,無論使用哪種區域性生成或顯示數據,您都可以確保所有數據的處理和存儲方式都相同。

編輯

要保存數據並將數字轉換為字符串,您將執行完全相同的操作。 當前線程的CultureInfo設置為“ en-US”時,所有數字中的.ToString()方法將使用“”。 而不是“,”代表小數點。 另一種方法是在調用.ToString()時指定格式提供程序。

decimalNumber.ToString(new CultureInfo("en-US"));

這指定當您將數字轉換為字符串時,請使用提供的區域性中的NumberFormat。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM