2014-11-20 57 views
1

我想获得与组分隔符的Double值的字符串输出,并没有任何文化中的精度损失。无论如何没有写我自己的方法来做到这一点呢?双ToString格式没有精度丢失和组分隔符

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

E.g. 对于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" 

编辑:当我说在精度损失我的意思是整体数字显著的数字,而不是没有价值的“decmial”部分失去精度。我希望能够使用组分隔符进行“往返”,所以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" 
+2

没有什么像*精确*双。 – CriketerOnSO 2014-11-20 16:47:10

+1

http://stackoverflow.com/questions/2863388/what-is-the-equivalent-of-the-java-bigdecimal-class-in-c – 2014-11-20 16:51:52

+1

['decimal'](http://msdn.microsoft.com /en-us/library/364x0z75.aspx) – 2014-11-20 16:52:23

回答

1

看起来不像任何内置的ToString格式做我所需要的。

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

感谢所有海报的帮助。

0

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

  • 千位分隔符
  • 作为多的小数位需要

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

+0

恐怕这不起作用,因为你松了有效数字。在下面的例子中,你会注意到在'232,000'部分取整,而不是我原来的问题'231,570': Double.MaxValue.ToString(“#,0.#”)=“179,769,313,486,232,000,000 ...” – MarkOwen320 2014-11-20 20:28:09

相关问题