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

作者:time-flies 时间:2021-09-08 13:12:00 

Double转化为String时的保留位数及格式

有时需要将程序中的数据写入到文件中进行保存,这时候就涉及到数据的字符串格式问题。

下面介绍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

Double类型转String 类型出现精度丢失问题

C#中Double值用ToString()方法获取string

若Double数字位数超过16位就会造成精度缺失

建议用取整和取小数部分再合并的方式获取相对精确的string

来源:https://blog.csdn.net/FliesOfTime/article/details/90671925

标签:C#,Double,String,保留位数
0
投稿

猜你喜欢

  • android UI绘制加减号按钮

    2023-09-11 02:55:28
  • Java File类 mkdir 不能创建多层目录的解决

    2022-12-01 09:20:18
  • JVM的基本介绍以及垃圾回收

    2023-12-20 02:59:51
  • SpringCloud Zuul基本使用方法汇总

    2023-11-14 15:21:54
  • Android仿支付宝中余额宝的数字动画效果

    2021-10-17 08:32:54
  • javascript checkbox全选和反选的简单实现

    2022-08-31 14:16:32
  • C++智能指针实例详解

    2021-12-18 00:38:59
  • 解决persistence.xml配置文件修改存放路径的问题

    2023-07-16 09:53:54
  • C#使用opencv截取旋转矩形区域图像的实现示例

    2023-11-12 22:20:44
  • C#实现虚拟键盘的实例详解

    2021-09-21 08:59:47
  • android主线程和子线程之间消息传递详解

    2021-11-06 05:06:23
  • Java实战之飞翔的小鸟小游戏

    2022-10-04 20:37:20
  • Springboot整合log4j2日志全解总结

    2021-12-27 22:56:58
  • Android 回调详解及简单实例

    2023-03-06 10:49:35
  • Android之ListView分页加载数据功能实现代码

    2023-08-13 03:44:17
  • C#验证给定字符串形式日期是否合法的方法

    2021-09-15 16:00:37
  • 在Java中int和byte[]的相互转换

    2023-09-23 15:35:45
  • Java IO流之字符流的使用详解

    2023-10-18 11:28:08
  • Android Glide图片加载(加载监听、加载动画)

    2022-08-27 08:31:24
  • Java实现用户管理系统

    2023-08-26 17:18:21
  • asp之家 软件编程 m.aspxhome.com