gpt4 book ai didi

c# - 将字符串转换为十进制 : how to handle the decimal separator in different cultures

转载 作者:太空狗 更新时间:2023-10-29 22:32:35 24 4
gpt4 key购买 nike

我需要将十进制值写入 MS Access 数据库,但我在将不同文化中的值转换为十进制时遇到了问题。从文件中获取值,以逗号分隔。我试试:

public decimal CSingleCulture (string str)
{
string sep = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
string s = str.Replace(",", sep);

return decimal.Parse(s);
}

如果 NumberDecimalSeparator = "." 那么工作很好,但是如果 NumberDecimalSeparator = "," 问题开始... decimal.Parse(s) 始终返回由点分隔的值。在这种情况下,插入数据库时​​会发生错误。

最佳答案

处理此问题的推荐方法是将值存储为数字而不是字符串。在数据库和程序中。当您这样做时,您当前的问题就永远不会出现。

唯一一次处理字符串格式的数字是在显示它们或接受用户输入时。在这些情况下,您可以使用用户的文化设置让他们看到并使用他们喜欢的分隔符。

如果您需要在字符串和数字之间进行转换以实现持久性,那么您必须使用文化不变转换。这似乎是你跌倒的地方。我怀疑您读取的文件没有明确定义的格式。确保在读取和写入文件时使用 CultureInfo.InvariantCulture。如果文件确实具有不同于不变区域性的明确定义的格式,则使用适当的特定 CultureInfo。

关于c# - 将字符串转换为十进制 : how to handle the decimal separator in different cultures,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20310088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com