我想在C#中将字符串转换为double,其中我面临一种情况,
值"6,,"
的字符串转换为double,而字符串"6++"
或带有连续字符的数字会引发错误,这是可以理解的。
请说明第一个字符串转换的原因?
答案 0 :(得分:3)
逗号在某些文化中用作千位分隔符,因此它可以存在于数字字符串中。对于加号,不能说同样的事情。
澄清," + 6"是有效的,因为你可以用加号明确表示正数。然而," 6 +"在我所知道的任何文化中都不是公认的数字格式。同样,虽然" 6,"可以被视为有效,",6"除非你专门使用逗号是小数分隔符的文化,否则可能不是。
答案 1 :(得分:2)
由于,
是不变文化的千位分隔符,因此解析器在小数点之前忽略它们。您也可以解析"6,4,55.23"
,然后产生6455.23
。
尝试在小数点后使用逗号解析数字,但会导致错误。
在文件doe Double.Parse
中,给出了以下规则(转述):
[WS] [符号] [积分位数[,]]积分位数[[小数位] [E [符号]指数位数] [WS] 的
- 整数位的运行可以通过组分隔符号进行分区。例如,在某些文化中,逗号(,)分隔数千个组
所以没有要求千位分隔符后面有三个数字(或连续分隔符之间)