我正在尝试使用组分隔符获取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"
答案 0 :(得分:1)
看起来没有任何内置的ToString格式符合我的要求。
出于我的目的,我能够编写一种方法来处理我所拥有的场景,但由于它不适用于所有可能的值,我不会在此处发布。
感谢所有海报的帮助。
答案 1 :(得分:0)
如果您指定格式#,0.#
,您将获得:
如果我正确地阅读了这个问题,这应该符合您的要求。