神秘的字符串要双重转换

时间:2014-05-02 04:15:43

标签: c#

我想在C#中将字符串转换为double,其中我面临一种情况,

"6,,"的字符串转换为double,而字符串"6++"或带有连续字符的数字会引发错误,这是可以理解的。

请说明第一个字符串转换的原因?

2 个答案:

答案 0 :(得分:3)

逗号在某些文化中用作千位分隔符,因此它可以存在于数字字符串中。对于加号,不能说同样的事情。

澄清," + 6"是有效的,因为你可以用加号明确表示正数。然而," 6 +"在我所知道的任何文化中都不是公认的数字格式。同样,虽然" 6,"可以被视为有效,",6"除非你专门使用逗号是小数分隔符的文化,否则可能不是。

答案 1 :(得分:2)

由于,是不变文化的千位分隔符,因此解析器在小数点之前忽略它们。您也可以解析"6,4,55.23",然后产生6455.23

尝试在小数点后使用逗号解析数字,但会导致错误。

在文件doe Double.Parse中,给出了以下规则(转述):

  

[WS] [符号] [积分位数[,]]积分位数[[小数位] [E [符号]指数位数] [WS]

     
      
  • 整数位的运行可以通过组分隔符号进行分区。例如,在某些文化中,逗号(,)分隔数千个组
  •   

所以没有要求千位分隔符后面有三个数字(或连续分隔符之间)