我在XML文件中有字符串,可以是双精度(或浮点数),例如:
<VIPair>
<voltage>+100mV</voltage>
<current>+1.05pA</current>
</VIPair>
<VIPair>
<voltage>+5.00mV</voltage>
<current>+0.0035nA</current>
</VIPair>
第一对将是“0.1”伏和“0.00000000000105”安培。 第二对是“0.005”伏和“0.000000000035”安培。
如何在C#中将它们转换为float的两倍? 感谢。
P.S:我已经可以从xml文件中读取它们,现在我将它们作为字符串进行检索。
答案 0 :(得分:1)
试试这个:
// Read string (if you do not want to use xml)
string test = "<voltage>+100mV</voltage>";
string measure = test.Substring(test.IndexOf('>')+1);
measure = measure.Substring(0, measure.IndexOf('<')-1);
// Extract measure unit
string um = measure.Substring(measure.Length - 1);
measure = measure.Substring(0, measure.Length - 1);
// Get value
double val = Double.Parse(measure);
// Convert value according to measure unit
switch (um)
{
case "G": val *= 1E9; break;
case "M": val *= 1E6; break;
case "k": val *= 1E3; break;
case "m": val /= 1E3; break;
case "u": val /= 1E6; break;
case "n": val /= 1E9; break;
case "p": val /= 1E12; break;
}
答案 1 :(得分:1)
嗨,这是Marco写的另一个版本。
string str = "1pV";
double factor;
double value;
switch (str[str.Length-2])
{
case 'M': factor = 1E6; break;
case 'm': factor = 1E-3; break;
case 'n': factor = 1E-9; break;
case 'p': factor = 1E-12; break;
default:
factor = 1; break;
}
value = double.Parse(str.Substring(0,str.Length-2)) * factor;
假设您已经可以使用html文本了。我试图用一个子字符串做同样的事情,用字符而不是字符串切换大小写(比较字符串要快一点)和double.parse。希望有人能提出比这更好的版本。
答案 2 :(得分:0)
使用mV
或nA
方法删除后缀字符串string.Substring
和string.Remove()
,并使用double.TryParse()
方法将字符串解析为double。
答案 3 :(得分:0)
如果你的值总是有两个字符,你可以简单地删除它们并解析数字。
var newstring = fullstring.Substring(0, fullstring.Length - 2);
var number = double.Parse(newstring);