c# - 如何在 c# 中的每个系统上使用点作为小数分隔符
问题描述
我尝试重新计算出 CSV 文件的 E 值。所以我必须找到E=(24.6)的所有值乘以 7.6 并写回E=(186.96)
我有代码来获取值24.6并且可以将其转换为双24,6 但我想要双倍为24.6
你能帮我把程序中的小数分隔符设置为. 而不是系统定义。
static void parseCommand(string commands)
{
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = ".";
Double conv = 0;
string[] command = commands.Split(' ');
foreach (var commando in command)
{
if (commando != "")
{
if (commando.Contains("E=("))
{
Console.WriteLine(Regex.Match(commando, @"\d+(\.\d+)?").Value + " Regex.Match");
conv = Convert.ToDouble(Regex.Match(commando, @"\d+(\.\d+)?").Value, nfi);
System.Console.WriteLine(conv + " converted");
System.Console.WriteLine(commando + " original\n");
}
}
}
控制台输出
24.6 Regex.Match
24,6 converted
E=(24.6) original
转换后的应该是 24.6
解决方案
打印您的double
值时,您还需要指定数字格式/文化。您可以nfi
在WriteLine
语句中使用:
System.Console.WriteLine(conv.ToString(nfi) + " converted");
或者,正如汉斯所说,您可以使用CultureInfo.InvariantCulture
而不是nfi
解析和格式化:
conv = Convert.ToDouble(Regex.Match(commando, @"\d+(\.\d+)?").Value, CultureInfo.InvariantCulture);
// ...
System.Console.WriteLine(conv.ToString(CultureInfo.InvariantCulture) + " converted");
推荐阅读
- ios - Pod 无法导入 UIKit
- php - 在php中捕获文件夹名称的顺序
- javascript - ES6 将一个数组的元素缩减为一个数组中其元素出现的频率
- javascript - 我的 javscript 计算有问题
- c++ - 在字符串中找到得分最高的单词,但我不断收到下标超出范围的错误
- mongodb - 无法连接到 MongoDB Atlas 集群
- pyomo - Pyomo - 警告:NEOS 暂时不可用
- c# - .Net Core 3.1 Worker Service 使用 Appsettings.json
- amazon-web-services - 在外部供应商的 AWS 账户中访问 Amazon Redshift 集群
- .net-core - OData Core Lib - 如何使用服务器端分页