C# double.ToString()在C中返回错误的值#
我有双变量,其值为:C# double.ToString()在C中返回错误的值#,c#,.net,formatting,double,C#,.net,Formatting,Double,我有双变量,其值为: double d = 0.000000000000056843418860808015; 当我打印这个变量时,它的打印错误 d.ToString(); 输出:“5.6843418860808E-14” 如何解决此问题?如果您希望输出不带指数符号,则需要格式化字符串: d.toString("F25"); 这将为您提供最多25个小数位数的“正确”数字 00000000000000 568434188608 编辑:完整的格式和转换列表可用,下面是您的快照 Original
double d = 0.000000000000056843418860808015;
当我打印这个变量时,它的打印错误
d.ToString();
输出:“5.6843418860808E-14”
如何解决此问题?如果您希望输出不带指数符号,则需要格式化字符串:
d.toString("F25");
这将为您提供最多25个小数位数的“正确”数字
00000000000000 568434188608
编辑:完整的格式和转换列表可用,下面是您的快照
Original value: 1054.32179
F: 1054.32
F0: 1054
F1: 1054.3
F2: 1054.32
F3: 1054.322
double d=0.0000000000000568434188608015;
var str=d.ToString(“G17”);
var值=str.Split('E')[0];
var zeros=Int32.Parse(str.Split('E')[1]);
var outputString=“”;
零=Math.Abs(零);
var addstring=“0。”;
对于(变量i=0;i<0-1;i++)
{
addstring+='0';
}
值=值。删除(1,1);
value=addstring+value;
请解释格式化值的“错误”是什么?@dasblinkenlight对他来说是“错误”的,因为这不是OP所期望的。OP应该学习科学符号:。
double d = 0.000000000000056843418860808015;
var str = d.ToString("G17");
var value = str.Split('E')[0];
var zeros = Int32.Parse(str.Split('E')[1]);
var outputString = "";
zeros = Math.Abs(zeros);
var addstring = "0.";
for (var i = 0; i < zeros - 1; i++)
{
addstring += '0';
}
value = value.Remove(1, 1);
value = addstring + value;