双ToString格式,没有精度丢失和组分隔符

时间:2014-11-20 16:45:50

标签: c# .net

我正在尝试使用组分隔符获取Double值的字符串输出,并且不会损失任何区域性的精度。无论如何,如果不用自己的方法来做这件事就可以吗?

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

E.g。 对于Invariant Culture中的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 - >解析 - >的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 个答案:

答案 0 :(得分:1)

看起来没有任何内置的ToString格式符合我的要求。

出于我的目的,我能够编写一种方法来处理我所拥有的场景,但由于它不适用于所有可能的值,我不会在此处发布。

感谢所有海报的帮助。

答案 1 :(得分:0)

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

  • 千位分隔符
  • 所需的小数位数

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