2013-12-03 49 views
-3

我需要将文本字符串格式化为双变量。我已经尝试使用:将文本字符串格式化为双变量

double dbValue; 
string strValue = "YES"; 

dbValue = Convert.ToDouble("strValue"); 

不给我任何错误,直到我运行该程序,我得到一个“输入字符串的不正确的格式”的错误消息。我知道它可以转换模拟数字的字符串表示(即“23.4”,“345.50”),但我怎样才能将实际字母“YES”变成双变量?我该如何做到这一点?

任何帮助将不胜感激。

谢谢。

+7

你认为价值是什么? “是”根本不是“双重”价值。目前尚不清楚“模拟数字”是什么意思,说实话... –

+1

另外,这与C有什么关系? –

+0

并得出结论:你为什么要这么做? 如果你至少想要一个存储int值的数组来表示字符串的每个字符。 –

回答

0
Convert.ToDouble(strValue) 

删除引号。

在你的例子中,你试图从字符串“strValue”中获得一个double值,这将不起作用。

另外,您如何期望将字符串“YES”转换为double?尝试像“3.14”。

+1

当strValue ==“YES”时,这真的没有什么帮助。 –

1

首先,你是路过strValue作为字符串文字,它需要是这样的:

dbValue = Convert.ToDouble(strValue); 

现在我们已经确定的是,.NET有不知道如何YES转换成的方式双。也许你想要的东西,如:

dbValue = strValue == "YES" ? 1M : 0M; 

但随后一个bool听起来像在这个节骨眼上一个更好的选择:

bool result = strValue == "YES"; 

编辑

鉴于您的编辑到原来的帖子里你说明你明白你可以将“3.14”转换成双精度,你甚至问什么是“是”?现在 - 如果您有某种客户转换器,我可以想象得到想象它知道,例如,如何将"PI"转换为3.14。但YES没有语义意义,除非你在看1或0。即使情况如此,当你有这样做时,你可能会冲击空气早餐俱乐部的风格,然后实现为黎明的冷光将疲惫的光芒洒在您过度熨烫的床单上,这只适用于英语,并且您的法国用户输入“OUI”以获得相同的结果,会得到一个错误...

它确实是一个有些令人费解和令人困惑的问题。

最后,我相信你可能会患上XY Problem

+0

我在一个只接受双精度值的函数中使用数字和模拟值的数组。因此,当模拟值(34.5,37,775.6)工作正常时,我无法将数字值(“YES”,“ON”,“SET”)转换为双倍变量以传递到此函数中。 – ttunstall

+0

@ user2871763那么你需要检查它们并生成一个适合你*想要的*的double。如果你知道YES,ON和SET是什么样子,那么先检查它。 –

0

我不确定,但您可能正在寻找的是获取每个字符的ASCII或Unicode值,然后将它们放入数组或双/整数值列表中。 Unicode(UTF-8)值将始终适合于比双倍效率更高的INT32。 (有关UTF标准的更多信息,请参见“http://en.wikipedia.org/wiki/UTF-8”)。

基本上,那么最简单的C#代码转换为“数字”(字节)的名单将是:

 // store the value 
     string strValue = ""; 

     // alloc enough space for each character to take 4 bytes 
     //  (won't work for large strings but for this it is probably all right) 
     var resultBytes = new byte[strValue.Length*2]; 
     bool complete; int charsUsed = 0; int bytesUsed = 0; 
     System.Text.UTF8Encoding.UTF8.GetEncoder().Convert(strValue.ToCharArray(), strValue.Length, 
      strValue.Length, resultBytes, 0, resultBytes.Length, true, out charsUsed, out bytesUsed, out complete); 


     // use the byte array as a list of numeric values. Indexes 0 - bytesUsed will be filled 

如果我正确地解释原来的问题,这应该完成预期的目标!

+0

这会给他一个毫无意义的结果。 –

+0

@ Moo-Juice可能会。假设这是通过某种方式进行数字转换,或者是通过网络流以特定格式发送,它可能仍然有用。鉴于问题的模糊性,我认为这既不是正确的也不是错误的答案。可能? –