运行时十进制符号更改

Posted

技术标签:

【中文标题】运行时十进制符号更改【英文标题】:Runtime decimal symbol change 【发布时间】:2021-09-24 06:59:04 【问题描述】:

在控制面板、区域中更改小数点时出现问题。 如果我有一个逗号,然后将其设置为点,应用程序会将浮点数据小数分隔符从逗号更改为点。但在下一次数据更新后,它又变回逗号,即使在 Windows 设置中十进制符号设置为点。

我在显示数据之前尝试使用CultureInfo.CurrentCulture.ClearCachedData(),但无济于事。

奇怪的是,我第一次换了符号后,CultureInfo.CurrentCulture.NumberFormat.numberDecimalSeparator属性也相应更新了,但是下一组数据来后,又变回原来的十进制符号了。

有没有办法获取在 windows 设置中更新的十进制符号并在应用程序中设置它,所以它不会将它改回以前的小数?

【问题讨论】:

请添加minimal reproducible example。 【参考方案1】:

使用类NumberFormatInfo。提供数字格式信息,还允许您更改值的格式

更多信息microsoft docs numberformatinfo

NumberFormatInfo nfi = new NumberFormatInfo();
string NumberDecimalSeparator = nfi.NumberDecimalSeparator;
string PercentSymbol = nfi.PercentSymbol;
//more..................................
            

if(nfi.NumberDecimalSeparator == ".")
   nfi.NumberDecimalSeparator = ",";
else
   nfi.NumberDecimalSeparator = ".";


decimal a = 0.25;
Console.WriteLine(a.ToString(nfi));

【讨论】:

以上是关于运行时十进制符号更改的主要内容,如果未能解决你的问题,请参考以下文章

通过 PHP 运行 bash 命令,更改目录然后执行二进制

符号化需要DSYM和二进制?还是只是 DSYM?

从 PowerBI 表的列中删除“%”符号

更改小数点分隔符

删除货币符号、1000 的分隔符并标准化十进制符号[重复]

VS2010:尝试为故障转储加载符号时“找不到匹配的二进制文件”