我有一个来自数据库的金额的字符串值。我系统上的当地文化是葡萄牙语(pt-br)。因此,具有小数值的金额被读取为,例如:3,4 表示 3.4。我需要以显示 3.4 的方式解析它,但无论我尝试什么,我都会得到 34。我已经在每个地方搜索了解决方案并尝试实现以下内容,但徒劳无功。
//这里的row[item.columnName]是我循环的DataTable的行
解决方案1:
Double amt = Double.Parse(Convert.ToString(row[item.columnName]), CultureInfo.InvariantCulture);
解决方案2:
CultureInfo usCulture = new CultureInfo("en-US");
NumberFormatInfo dbNumberFormat = usCulture.NumberFormat;
Double amt = Double.Parse(Convert.ToString(row[item.columnName]), dbNumberFormat);
它们似乎都不起作用。有人可以建议我是否有其他方法可以实现这一目标?
编辑:
原来我从数据库中得到的值是十进制类型的,所以我将我的 LOC 更改为以下。
decimal d = decimal.Parse(Convert.ToString(row[item.columnName]),new System.Globalization.CultureInfo("pt-BR", false));
它似乎仍然不起作用,我只是不知道哪里出错了。我在DotNetFiddle上尝试了同样的事情 ,它工作得非常好。下面是我尝试过的代码。
using System;
public class Program
{
public static void Main()
{
decimal d = decimal.Parse("1,35",new System.Globalization.CultureInfo("pt-BR", false));
Console.WriteLine(d.ToString());
}
}
我得到的结果和预期的一样是 1.35。我究竟做错了什么?