簡體   English   中英

如何在C#中從String解析為Float?

[英]How to parse from String to Float in C#?

這個問題應該很簡單,但是我找不到使其工作的方法。 我有以下代碼:

string yeah = "0.5";
float yeahFloat = float.Parse(yeah);
MessageBox.Show(yeahFloat.ToString());

但是消息框顯示為“ 5”而不是“ 0.5”。 如何使用float解決此問題?

float yeahFloat = float.Parse(yeah, CultureInfo.InvariantCulture);

請參閱文檔: http : //msdn.microsoft.com/en-us/library/bh4863by.aspx

0.5是某些國家/地區寫小數的方式,例如在美國。 在法國,小數點后更多用逗號寫: 0,5
通常,您提供的代碼會在我的計算機上引發異常。

您需要指定您希望從哪種文化中解析字符串。 如果不是這樣,將需要您的計算機區域性設置,這很糟糕,因為您的代碼可以在不同的國家/地區運行。

因此,通過指定不變的區域性,您對Parse函數說了:好的,讓我們嘗試解析點或逗號,並盡最大努力:

string yeah = "0.5";
float yeahFloat = float.Parse(yeah, CultureInfo.InvariantCulture);
Console.Write(yeahFloat);

關於這個問題已經有很多問題了:

默認情況下, Single.Parse(String)根據您的本地化設置進行解析。 如果要使用特定的方法,則必須使用該方法的適當重載以及所需的區域性設置。

您可以使用float.TryParse()進行嘗試:

string yeah = "0.5";
float yeahFloat;
 if (float.TryParse(yeah,System.Globalization.NumberStyles.Any,
     System.Globalization.CultureInfo.InvariantCulture,out yeahFloat))
   {
     MessageBox.Show(yeahFloat.ToString());    
   }

嘗試在ToString()方法中傳遞所需的格式

MessageBox.Show(yeahFloat.ToString("0.0")); // 1 decimal place
 String yeah = "0.5";
float yeahFloat = Convert.ToSingle(yeah);
MessageBox.Show(yeahFloat.ToString());

暫無
暫無

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

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