如何使 DataTable.Compute 与不同的 CultureInfos 一起工作

问题描述 投票:0回答:1

我正在尝试解析基本的数学表达式字符串。比如“2+2”

这是我的代码

var table = new DataTable();
table.Locale = culture;
var result = table.Compute(expression, null);
value = (double)Convert.ChangeType(result, typeof(double), culture);

当我的文化是“en”时,这很好用。如果我的表达式是“2+0.2”,代码将输出 2.2 作为双精度值。

但是,当我的文化类似于“es”,使用逗号表示小数时,代码不起作用。如果我的表达式是“2+0,2”,它会抛出 SyntaxErrorException。

我在网上查了一下,但没有找到任何东西。你知道为什么这不起作用或者我如何让它起作用吗?

c# .net parsing datatable cultureinfo
1个回答
0
投票

我认为逗号在表达式中无效。不确定这是否对您有帮助,但它得到了预期的结果。

var table = new DataTable();
table.Locale = new CultureInfo("es-ES");
table.Columns.Add("x", typeof(double));
table.Columns.Add("y", typeof(double));
table.Columns.Add("result", typeof(double), "x + y");

table.Rows.Add("2", "0,2");
var result = table.Rows[0][2]; //2.2
© www.soinside.com 2019 - 2024. All rights reserved.