C# 将字符串转换为十进制忽略点

C# 将字符串转换为十进制忽略点,c#,decimal,dataformat,C#,Decimal,Dataformat,今天,我注意到我使用十进制的第一个地方是在网格中显示逗号而不是点 第二个问题是当我编辑或插入带有点的数字时,它会忽略该点 就像我输入的2.5一样,我得到了25分 这就像示例代码: decimal a = Convert.ToDecimal("2.5"); a的资源是25 这个问题发生在iis上,也发生在我的本地计算机上 到处都是,我该怎么解决呢?你现在在哪种文化中?这应该可以完成以下工作: decimal a = Convert.ToDecimal("2.5", new CultureInfo

今天,我注意到我使用十进制的第一个地方是在网格中显示逗号而不是点 第二个问题是当我编辑或插入带有点的数字时,它会忽略该点

就像我输入的2.5一样,我得到了25分

这就像示例代码:

decimal a = Convert.ToDecimal("2.5");
a的资源是25

这个问题发生在iis上,也发生在我的本地计算机上


到处都是,我该怎么解决呢?

你现在在哪种文化中?这应该可以完成以下工作:

decimal a = Convert.ToDecimal("2.5", new CultureInfo("en-US"));
此外,对于逗号显示:

string s = a.ToString(new CultureInfo("en-US"));

你目前在哪种文化中?这应该可以完成以下工作:

decimal a = Convert.ToDecimal("2.5", new CultureInfo("en-US"));
此外,对于逗号显示:

string s = a.ToString(new CultureInfo("en-US"));

您可能可以通过更改默认区域性或在转换调用中强制使用特定区域性来修复它

在过去的某个时候,我们的欧洲表亲们把小数点和逗号弄混了,所以三万五千零七点二五写为:

35.007,25
因此,几乎可以肯定的是,您的文化设置正在丢弃数千个分隔符,无论它们位于何处,因此2.5等于25。这意味着像2500这样的数字几乎肯定会变成2.5

答:事实上,你可能不应该在转换电话中强制使用特定的文化,因为文化的全部意义在于适应人们的需要。欧洲人对我们这些生化需氧量已经不怎么重视了,却没有给他们更多的理由:你所看到的正是应该发生的事情


如果需要特定区域性,请以这种方式配置计算机,并让代码使用默认区域性。

您可能可以通过更改默认区域性或在转换调用中强制使用特定区域性来修复它

在过去的某个时候,我们的欧洲表亲们把小数点和逗号弄混了,所以三万五千零七点二五写为:

35.007,25
因此,几乎可以肯定的是,您的文化设置正在丢弃数千个分隔符,无论它们位于何处,因此2.5等于25。这意味着像2500这样的数字几乎肯定会变成2.5

答:事实上,你可能不应该在转换电话中强制使用特定的文化,因为文化的全部意义在于适应人们的需要。欧洲人对我们这些生化需氧量已经不怎么重视了,却没有给他们更多的理由:你所看到的正是应该发生的事情


如果您需要特定的区域性,请以这种方式配置您的计算机,并让您的代码使用默认值。

我有数百万行代码可以执行此操作,有另一种解决方案可以解决此奇怪行为?您可以在Web.config或App.config中为整个应用程序设置当前区域性。iv完成此操作,但是没有任何变化,它在网格中仍然有这个逗号,并且忽略了当insertits acttuly显示逗号而不是点200,00而不是点200.00时的点。你做得不对。我不知道还能说什么。。。应该是这样的。我有数百万行代码可以这样做,对于这种奇怪的行为有另一种解决方案吗?你可以在Web.config或App.config中为整个应用程序设置当前区域性。如果你这样做,但是没有任何变化,它在网格中仍然有这个逗号,并且忽略了当insertits acttuly显示逗号而不是点200,00而不是点200.00时的点。你做得不对。我不知道还能说什么。。。这样应该行得通。我手动更改了母版页上的区域性。要修复它,我只需在启动函数时更改区域性,并将其返回到函数的最后一行。谢谢你们真的帮助我获得一些新信息我手动改变了母版页上的文化。要修复它,我只需在启动函数时更改区域性,并将其返回到函数的最后一行。谢谢你们真的帮我得到一些新信息