You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何在string.Join()指定InvariantCulture拼接double数组

解决方案

问题原因

string.Join直接拼接值类型集合时,默认调用当前线程区域文化对应的格式化规则处理数值。德语区域文化中以逗号作为小数分隔符,因此0.001会被格式化为0,001,输出结果不符合预期。

实现代码

两种写法均仅需修改原拼接逻辑的1行代码,即可全程保持InvariantCulture格式,不受系统区域设置影响:

  • .NET 5及以上版本,可直接使用带区域文化参数的string.Join重载,代码最精简:
using System.Globalization;

XElement element = new("TestNode");
double[] myDoubleArray = new double[2] { 0.001, 1.0 };
var stringValue = string.Join(CultureInfo.InvariantCulture, " ", myDoubleArray);
element.Add(new XAttribute("Values", stringValue));
  • 全版本兼容写法,通过LINQ逐元素按InvariantCulture格式化后拼接:
using System.Globalization;
using System.Linq;

XElement element = new("TestNode");
double[] myDoubleArray = new double[2] { 0.001, 1.0 };
var stringValue = string.Join(" ", myDoubleArray.Select(d => d.ToString(CultureInfo.InvariantCulture)));
element.Add(new XAttribute("Values", stringValue));

输出结果

修改后固定输出如下内容,不会随系统语言变化:

<TestNode Values="0.001 1" />

内容的提问来源于stack exchange,提问作者skm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 13:57:31