繁体   English   中英

生成十进制类型的往返字符串

[英]Produce a round-trip string for a decimal type

如果我想将double转换为字符串并返回到完全匹配的double ,我会使用类似的东西:

double d1 = 1 / 3.0;
string s = d1.ToString("R");
double d2 = double.Parse(s);

但是,“R”格式没有为十进制类型定义(您得到“FormatException:格式说明符无效”)。

生成十进制类型的往返字符串的方法是什么?

decimal往返的默认输出格式,因此您无需执行任何特殊操作。 在这个意义上它就像int

Decimal实际上是二进制十进制值 (它使用10的基数,而不是Double 2 ),这就是为什么不需要像ToString("R")那样的特殊精确表示;

  Decimal value = 123.456m;
  String result = value.ToString(CultureInfo.InvariantCulture); // <- That's enough 

另见详情:

http://csharpindepth.com/articles/general/decimal.aspx

如果你试试,

decimal d1 = 1m / 3;
string s = d1.ToString();
decimal d2 = decimal.Parse(s);
// where d1 == d2 = true

您将看到您不需要任何额外的格式选项来获得正确的string表示。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM