Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 双ToString格式,无精度丢失和组分隔符_C#_.net - Fatal编程技术网

C# 双ToString格式,无精度丢失和组分隔符

C# 双ToString格式,无精度丢失和组分隔符,c#,.net,C#,.net,我正在尝试使用组分隔符获得双值的字符串输出,并且在任何区域性中都不会丢失精度。在没有写我自己的方法的情况下,还有什么方法可以做到这一点吗 我知道您可以使用ToString(“N0”),但这会导致精度下降。 我知道可以使用ToString(“R”)来保持精度,但这不包括组分隔符 例如。 对于不变区域性中的Double.MaxValue,我希望 "179,769,313,486,231,570,000,000,000,000,000,000,000,000,000,000,000,000,000,0

我正在尝试使用组分隔符获得双值的字符串输出,并且在任何区域性中都不会丢失精度。在没有写我自己的方法的情况下,还有什么方法可以做到这一点吗

我知道您可以使用ToString(“N0”),但这会导致精度下降。 我知道可以使用ToString(“R”)来保持精度,但这不包括组分隔符

例如。 对于不变区域性中的Double.MaxValue,我希望

"179,769,313,486,231,570,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000"
编辑:当我说精度损失时,我指的是有效数字的完整数字,而不是值的“十进位”部分的精度。我希望能够使用组分隔符进行“往返”,因此ToString->Parse->ToString

编辑2:为了更好地比较我试图解决的问题,这里是使用ToString(“N0”)时的输出。在这里,您可以看到有效数字末尾的舍入:

"179,769,313,486,232,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000"

如果指定格式
,0.#
,您将得到:

  • 千分离器
  • 所需的小数位数

如果我正确地阅读了问题,这应该满足您的要求。

与任何内置的ToString格式都不符合我的要求

出于我的目的,我能够编写一个方法来处理我遇到的场景,但是由于它不能适用于所有可能的值,所以我不在这里发布它


感谢所有海报的帮助

并没有什么比精确双精度更合适的了。你们到底需要多高的精度?我已经编辑过了,来解释我对上面“精确”一词的用法。这不是关于十进制精度,而是关于字符串中有效数字的丢失。我担心这不适用于丢失有效数字。在下面的示例中,您会注意到在“232000”部分舍入,而不是我原始问题中的“231570”:Double.MaxValue.ToString(“#,0.#”)=“179769313486232000000…”