我正在尝试将C#double值转换为指数表示法的字符串.考虑一下这个C#代码:
double d1 = 0.12345678901200021; Console.WriteLine(d1.ToString("0.0####################E0")); //outputs: 1.23456789012E-1 (expected: 1.2345678901200021E-1)
任何人都可以告诉我格式字符串从双d1输出“1.2345678901200021E-1”,如果可能的话?
解决方法
双值只能容纳15到16位数,你有17位(如果我算的是右边).由于64位双数字仅保留16位数字,因此您的最后一位数字会被截断,因此当您将数字转换为科学计数法时,最后一位数字似乎已被截断.
你应该使用十进制.十进制类型可以保存128位数据,而double只能保存64位.