我有一个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
答案 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
}
}
}