如何格式化更多数字的双精度?

时间:2013-04-03 22:03:42

标签: c# double number-formatting

我有一个double值,我想将它转换为超过默认15位数的字符串。我怎么能做到这一点?

(1.23456789987654321d).ToString(); // 1.23456789987654
(12.3456789987654321d).ToString(); // 12.3456789987654
(1.23456789987654321d).ToString("0.######################################"); // 1.23456789987654
(1.23456789987654321d).ToString("0.0000000000000000000000000000000"); // 1.2345678998765400000000000000000

2 个答案:

答案 0 :(得分:6)

  

我有一个double值,我想将其转换为超过默认15位的字符串。

为什么呢?它基本上是15位后的垃圾。您可以使用我的DoubleConverter类获取完全值:

string exact = DoubleConverter.ToExactString(value);

...但是在15位数之后,其余的只是噪音。

如果您想要有意义数据的超过15位有效数字,请使用decimal

答案 1 :(得分:2)

不能使用double,因为它不支持超过15位的精度。 您可以尝试使用十进制数据类型:

using System;

namespace Code.Without.IDE
{
    public class FloatingTypes
    {
        public static void Main(string[] args)
        {
            decimal deci = 1.23456789987654321M;
            decimal decix = 1.23456789987654321987654321987654321M;
            double doub = 1.23456789987654321d;
            Console.WriteLine(deci); // prints - 1.23456789987654321
            Console.WriteLine(decix); // prints - 1.2345678998765432198765432199
            Console.WriteLine(doub); // prints - 1.23456789987654
        }
    }
}