[C#]Double转化为String时的保留位数及格式

博客介绍了程序中数据写入文件时,Double转化为String设置保留位数及格式的相关内容,示例源于官方资料,方便日后快速查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       有时需要将程序中的数据写入到文件中进行保存,这时候就涉及到数据的字符串格式问题。下面介绍Double转化为String时如何设置保留位数及格式,示例来自官方资料,博客用于日后快速查询。

Double.ToString Method官方资料

double[] numbers= {1054.32179, -195489100.8377, 1.0437E21, 
                   -1.0573e-05};
string[] specifiers = { "C", "E", "e", "F", "G", "N", "P", 
                        "R", "#,000.000", "0.###E-000",
                        "000,000,000,000.00###" };
foreach (double number in numbers)
{
   Console.WriteLine("Formatting of {0}:", number);
   foreach (string specifier in specifiers) {
      Console.WriteLine("   {0,-22} {1}", 
                        specifier + ":", number.ToString(specifier));
      // Add precision specifiers from 0 to 3.
      if (specifier.Length == 1 & ! specifier.Equals("R")) {
         for (int precision = 0; precision <= 3; precision++) {
            string pSpecifier = String.Format("{0}{1}", specifier, precision);
            Console.WriteLine("   {0,-22} {1}", 
                              pSpecifier + ":", number.ToString(pSpecifier));
         }    
         Console.WriteLine();
      }   
   }
   Console.WriteLine();
}
// The example displays the following output to the console:
//       Formatting of 1054.32179:
//          C:                     $1,054.32
//          C0:                    $1,054
//          C1:                    $1,054.3
//          C2:                    $1,054.32
//          C3:                    $1,054.322
//       
//          E:                     1.054322E+003
//          E0:                    1E+003
//          E1:                    1.1E+003
//          E2:                    1.05E+003
//          E3:                    1.054E+003
//       
//          e:                     1.054322e+003
//          e0:                    1e+003
//          e1:                    1.1e+003
//          e2:                    1.05e+003
//          e3:                    1.054e+003
//       
//          F:                     1054.32
//          F0:                    1054
//          F1:                    1054.3
//          F2:                    1054.32
//          F3:                    1054.322
//       
//          G:                     1054.32179
//          G0:                    1054.32179
//          G1:                    1E+03
//          G2:                    1.1E+03
//          G3:                    1.05E+03
//       
//          N:                     1,054.32
//          N0:                    1,054
//          N1:                    1,054.3
//          N2:                    1,054.32
//          N3:                    1,054.322
//       
//          P:                     105,432.18 %
//          P0:                    105,432 %
//          P1:                    105,432.2 %
//          P2:                    105,432.18 %
//          P3:                    105,432.179 %
//       
//          R:                     1054.32179
//          #,000.000:             1,054.322
//          0.###E-000:            1.054E003
//          000,000,000,000.00###: 000,000,001,054.32179
//       
//       Formatting of -195489100.8377:
//          C:                     ($195,489,100.84)
//          C0:                    ($195,489,101)
//          C1:                    ($195,489,100.8)
//          C2:                    ($195,489,100.84)
//          C3:                    ($195,489,100.838)
//       
//          E:                     -1.954891E+008
//          E0:                    -2E+008
//          E1:                    -2.0E+008
//          E2:                    -1.95E+008
//          E3:                    -1.955E+008
//       
//          e:                     -1.954891e+008
//          e0:                    -2e+008
//          e1:                    -2.0e+008
//          e2:                    -1.95e+008
//          e3:                    -1.955e+008
//       
//          F:                     -195489100.84
//          F0:                    -195489101
//          F1:                    -195489100.8
//          F2:                    -195489100.84
//          F3:                    -195489100.838
//       
//          G:                     -195489100.8377
//          G0:                    -195489100.8377
//          G1:                    -2E+08
//          G2:                    -2E+08
//          G3:                    -1.95E+08
//       
//          N:                     -195,489,100.84
//          N0:                    -195,489,101
//          N1:                    -195,489,100.8
//          N2:                    -195,489,100.84
//          N3:                    -195,489,100.838
//       
//          P:                     -19,548,910,083.77 %
//          P0:                    -19,548,910,084 %
//          P1:                    -19,548,910,083.8 %
//          P2:                    -19,548,910,083.77 %
//          P3:                    -19,548,910,083.770 %
//       
//          R:                     -195489100.8377
//          #,000.000:             -195,489,100.838
//          0.###E-000:            -1.955E008
//          000,000,000,000.00###: -000,195,489,100.8377
//       
//       Formatting of 1.0437E+21:
//          C:                     $1,043,700,000,000,000,000,000.00
//          C0:                    $1,043,700,000,000,000,000,000
//          C1:                    $1,043,700,000,000,000,000,000.0
//          C2:                    $1,043,700,000,000,000,000,000.00
//          C3:                    $1,043,700,000,000,000,000,000.000
//       
//          E:                     1.043700E+021
//          E0:                    1E+021
//          E1:                    1.0E+021
//          E2:                    1.04E+021
//          E3:                    1.044E+021
//       
//          e:                     1.043700e+021
//          e0:                    1e+021
//          e1:                    1.0e+021
//          e2:                    1.04e+021
//          e3:                    1.044e+021
//       
//          F:                     1043700000000000000000.00
//          F0:                    1043700000000000000000
//          F1:                    1043700000000000000000.0
//          F2:                    1043700000000000000000.00
//          F3:                    1043700000000000000000.000
//       
//          G:                     1.0437E+21
//          G0:                    1.0437E+21
//          G1:                    1E+21
//          G2:                    1E+21
//          G3:                    1.04E+21
//       
//          N:                     1,043,700,000,000,000,000,000.00
//          N0:                    1,043,700,000,000,000,000,000
//          N1:                    1,043,700,000,000,000,000,000.0
//          N2:                    1,043,700,000,000,000,000,000.00
//          N3:                    1,043,700,000,000,000,000,000.000
//       
//          P:                     104,370,000,000,000,000,000,000.00 %
//          P0:                    104,370,000,000,000,000,000,000 %
//          P1:                    104,370,000,000,000,000,000,000.0 %
//          P2:                    104,370,000,000,000,000,000,000.00 %
//          P3:                    104,370,000,000,000,000,000,000.000 %
//       
//          R:                     1.0437E+21
//          #,000.000:             1,043,700,000,000,000,000,000.000
//          0.###E-000:            1.044E021
//          000,000,000,000.00###: 1,043,700,000,000,000,000,000.00
//       
//       Formatting of -1.0573E-05:
//          C:                     $0.00
//          C0:                    $0
//          C1:                    $0.0
//          C2:                    $0.00
//          C3:                    $0.000
//       
//          E:                     -1.057300E-005
//          E0:                    -1E-005
//          E1:                    -1.1E-005
//          E2:                    -1.06E-005
//          E3:                    -1.057E-005
//       
//          e:                     -1.057300e-005
//          e0:                    -1e-005
//          e1:                    -1.1e-005
//          e2:                    -1.06e-005
//          e3:                    -1.057e-005
//       
//          F:                     0.00
//          F0:                    0
//          F1:                    0.0
//          F2:                    0.00
//          F3:                    0.000
//       
//          G:                     -1.0573E-05
//          G0:                    -1.0573E-05
//          G1:                    -1E-05
//          G2:                    -1.1E-05
//          G3:                    -1.06E-05
//       
//          N:                     0.00
//          N0:                    0
//          N1:                    0.0
//          N2:                    0.00
//          N3:                    0.000
//       
//          P:                     0.00 %
//          P0:                    0 %
//          P1:                    0.0 %
//          P2:                    0.00 %
//          P3:                    -0.001 %
//       
//          R:                     -1.0573E-05
//          #,000.000:             000.000
//          0.###E-000:            -1.057E-005
//          000,000,000,000.00###: -000,000,000,000.00001 
<think>嗯,用户想知道在C#中如何将double类型转换为string类型。首先,我得回忆一下C#中的类型转换方法。记得有Convert.ToString()方法,这应该可以直接用。比如Convert.ToString(doubleValue),对吧?然后还有ToString()方法,因为double是结构体,应该有自己的ToString()方法,可以直接调用,比如num.ToString()。 不过用户可能还需要格式控制,比如保留几位小数或者科学计数法。这候需要用ToString()的参数,比如格式字符串。例如,"F2"表示保留两位小数,"E"表示科学计数法。可能还需要考虑文化区域的问题,比如不同的地区小数点符号可能不同,用InvariantCulture可以保持一致性。 然后,用户提供的引用中有提到Convert.ToString的例子,比如引用[2]里的double a=1.2522; string s=Convert.ToString(a); 这说明Convert.ToString确实是一个方法。另外在引用[3]里有个Functions.DoubleToString方法,但可能用户自己封装了一个函数,不过标准库的方法应该足够用了。 另外,用户可能在做界面开发,比如引用[4]里提到的小工具,所以转换后的字符串可能用于文本框显示,这格式控制就很重要,比如显示红色或蓝色,但转换本身只是字符串处理。 需要注意的还有,如果double的值很大或很小,可能需要用科学记数法,或者处理舍入误差。比如123456.789用"0.00"格式变成123456.79。此外,使用string.Format或者插值字符串也是可行的,比如$"{num:F2}"。 总结一下,应该分几种方法介绍:Convert.ToStringToString()无参数、带格式参数,以及文化区域设置。同给出示例代码,并说明适用场景,比如是否需要格式化,是否需要考虑区域设置等。最后可能还要提醒常见的错误,比如空值或者格式字符串错误,但用户的问题可能基础,暂不需要深入错误处理。</think>### C# doublestring 的常用方法 在C#中,将double类型转换为string类型有以下几种常用方式,具体选择取决于是否需要格式化控制或区域性设置: --- #### 1. **`Convert.ToString()` 方法** 直接调用系统提供的类型转换方法,适用于简单转换: ```csharp double num = 3.14159; string str = Convert.ToString(num); // 输出: "3.14159" ``` 此方法默认保留所有小数位,不进行四舍五入[^2]。 --- #### 2. **`ToString()` 方法** 所有数值类型都支持的实例方法,可添加格式化参数: ```csharp double num = 123.456; // 无参数形式(保留所有小数位) string str1 = num.ToString(); // 输出: "123.456" // 格式控制参数 string str2 = num.ToString("F2"); // 输出: "123.46"(保留两位小数) string str3 = num.ToString("E"); // 输出: "1.234560E+002"(科学计数法) ``` 常用格式符: - `"F"`:固定小数位数(如`"F3"`保留3位) - `"N"`:千位分隔符(如`"N0"`表示无小数且带逗号分隔) - `"0.00"`:自定义格式(如`123.456.ToString("0.00")`输出`"123.46"`) --- #### 3. **字符串插值或 `string.Format`** 通过格式化字符串灵活控制输出: ```csharp double num = 99.995; string str1 = $"{num:F2}"; // 输出: "100.00"(自动四舍五入) string str2 = string.Format("{0:0.###}", num); // 输出: "99.995" ``` --- #### 4. **区域性设置(CultureInfo)** 解决不同语言环境下的格式差异: ```csharp double num = 1234.56; string str1 = num.ToString("N2", CultureInfo.InvariantCulture); // 输出: "1,234.56" string str2 = num.ToString("N2", new CultureInfo("de-DE")); // 输出: "1.234,56" ``` 使用`CultureInfo.InvariantCulture`可避免小数点/千位符的本地化差异[^4]。 --- ### 示例代码 ```csharp using System; using System.Globalization; class Program { static void Main() { double num = 3456.123; // 方法1: Convert.ToString Console.WriteLine(Convert.ToString(num)); // "3456.123" // 方法2: ToString格式控制 Console.WriteLine(num.ToString("0.0")); // "3456.1" // 方法3: 字符串插值 Console.WriteLine($"{num:N0}"); // "3,456" // 方法4: 区域性设置 Console.WriteLine(num.ToString("F2", CultureInfo.InvariantCulture)); // "3456.12" } } ``` --- ### 注意事项 1. **四舍五入规则**:格式会自动处理,如`99.995.ToString("F2")`结果为`100.00`。 2. **性能优化**:频繁转换优先使用`ToString()`而非`Convert.ToString()`。 3. **异常处理**:若值为`double.NaN`或`double.Infinity`,转换结果会直接输出字符串形式(如`"NaN"`)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值