[英]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");
那時我有同樣的問題,上面的代碼解決了
num
是2,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.