簡體   English   中英

將格式為XXX的字符串轉換為浮點型

[英]Convert string with format X.X.X to float

我正在為一個項目獲取一些數據,該項目給我一個格式為XXX的字符串(示例15.23.1),我需要以某種方式降至15.231。 我以為可以將原始字符串轉換為浮點數,然后使用Convert.ToSingle將其轉換為浮點數,但是到目前為止,我的嘗試都失敗了。

有人對此有一個簡單的解決方案嗎?

只需刪除最后一個. 然后使用float.Parsefloat.TryParse解析字符串的其余部分

string str = "15.23.1";
str = str.Remove(str.LastIndexOf('.'), 1);

float f;
if (float.TryParse(str, out f))
{
    Console.WriteLine("Parsing successful");
}
else
{
    Console.WriteLine("Parsing failed");
}

如果要進行文化不敏感的解析,則可以嘗試:

if (float.TryParse(str, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out f))

如果str具有意外格式,則將引發異常。

float f = float.Parse(str.Remove(str.LastIndexOf('.'), 1), CultureInfo.InvariantCulture);

看起來您只需要使用String.RemoveString.LastIndexOf方法;

string s = "15.23.1";
s = s.Remove(s.LastIndexOf('.'), 1);

float f;
if(float.TryParse(s, NumberStyles.Float, CultureInfo.InvariantCulture, out f))
{
   Console.WriteLine("YES");
   Console.WriteLine(f);
}
else
{
   Console.WriteLine("NO");
}

輸出將是;

15,231

帶有正則表達式的選項:

string str = "14.4.6";
str = Regex.Replace(str, @"(\d+)(\.\d+)?\.?(\d+)?", "$1$2$3");
// parse string

輸入和輸出樣本:

15.23.1 > 15.231
15.23   > 15.23
15      > 15     

暫無
暫無

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

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