HOWTO · Csharp

在 C# 中将双精度转换为字符串

在本指南中,我们将学习如何在 C# 中将双精度数转换为字符串。

本页内容

要将 C# double 值转换为 string,可以调用 ToString()、使用 String.Format,也可以将该值放入插值 string。这些方式都会生成文本;格式说明符(例如 F2)还可以控制数字的显示方式。数字格式化会使用区域性设置,因此,如果需要让小数分隔符保持可预测,应明确指定区域性。

使用 ToString() 将 double 转换为 string

对值调用 ToString(),并将返回的文本赋给 string。当默认数字表示形式符合需求时,直接转换是合适的选择。具体格式可能受当前区域性影响;如果输出必须在不同计算机上保持一致,请参阅最后一节。

运行以下完整程序即可转换并打印一个值:

本节中的代码以及显示的标签或输出仍为英文。

using System;

class Program
{
    static void Main()
    {
        double value = 0.09434;
        string text = value.ToString();
        Console.WriteLine(text);
    }
}
0.09434

调用该方法会根据数值生成文本,不会更改 value。生成的 string 可用于显示、日志记录或其他文本操作。

使用 String.Format 转换并格式化 double

String.Format 会将值插入复合格式 string。占位符 {0} 表示第一个值参数。如果没有指定格式说明符,该值会采用默认数字格式,类似于 ToString()。

若要在小数分隔符后显示两位数字,可在占位符中添加 :F2。这会改变结果文本中显示的精度,但不会舍入或替换变量中原有的 double 值。

以下完整程序演示如何转换并设置格式:

本节中的代码以及显示的标签或输出仍为英文。

using System;

class Program
{
    static void Main()
    {
        double value = 3.14159265359;
        string text = String.Format("{0:F2}", value);
        Console.WriteLine(text);
    }
}
3.14

使用 string 插值转换并格式化 double

插值 string 会将表达式放在花括号内,并写入以 $ 为前缀的 string 字面量中。将插值结果赋给 string 时,转换会作为构建文本的一部分完成。在冒号后添加格式说明符即可控制显示方式,例如 {value:F2}。

下面用插值展示相同的两位小数格式:

本节中的代码以及显示的标签或输出仍为英文。

using System;

class Program
{
    static void Main()
    {
        double value = 3.14159265359;
        string text = $"{value:F2}";
        Console.WriteLine(text);
    }
}
3.14

当将值嵌入周围文本时,插值通常最清晰。如果需要复合格式 string,可以选择 String.Format;如果只需直接转换,则可以选择 ToString()。这些方式会将值格式化为文本,不会对原始数值执行算术运算。

为数值输出选择格式和区域性

默认数字格式会使用当前区域性。例如,不同区域性可能使用不同的小数分隔符。当文本需要与其他系统交换,或必须在不同计算机设置下保持相同表示形式时,这一点很重要。

传入 CultureInfo.InvariantCulture 可请求不依赖区域性的格式化。下面的完整程序将此设置与 F2 结合使用:

本节中的代码以及显示的标签或输出仍为英文。

using System;
using System.Globalization;

class Program
{
    static void Main()
    {
        double value = 3.14159265359;
        string text = value.ToString("F2", CultureInfo.InvariantCulture);
        Console.WriteLine(text);
    }
}
3.14

面向应用程序所在区域的用户显示文本时,应使用当前区域性进行格式化。如果文本需要交换或存储,并遵循应用程序定义的格式,则应使用不变区域性来获得稳定的表示形式。进行解析或序列化时,请使用相应的区域性感知 API 和格式规则,不要假定显示文本是通用的数值表示形式。