当我有一个列表的总和时,从双精度到字符串计算时出现问题。 更改语言设置后,我尝试使用InvariantCulture,但没有设法使其正常工作。有人对如何处理有任何提示吗?
代码如下:
List<string> Moms_F = new List<string>();
double tot_Moms_F = Moms_F.Sum(x => Convert.ToDouble(x));
AssignControls(GetControls(wordDoc, "tot_Moms_F"), tot_Moms_F.ToString());
我想做的是
CultureInfo ci;
ci = (CultureInfo)CultureInfo.InvariantCulture.Clone();
ci.NumberFormat.NumberDecimalSeparator = ".";
ci.NumberFormat.NumberGroupSeparator = ".";
然后添加
double tot_Moms_F = Moms_F.Sum(x => Convert.ToDouble(ci));
但是我得到了错误: 无法将类型为“ System.Globalization.CultureInfo”的对象转换为类型为“ System.IConvertible”。
有人有个好主意吗?
答案 0 :(得分:0)
如果有人偶然发现此问题并遇到相同的问题,便可以这样解决:
CultureInfo ci = (CultureInfo)CultureInfo.CurrentCulture.Clone();
ci.NumberFormat.CurrencyDecimalSeparator = ".";
float tot_Moms_F = Moms_F.Sum(x => float.Parse(x,NumberStyles.Any, ci));
值得注意的一件事是,打印的值是,而不是。太懒了