double.ToString() return C# 中的错误值
double.ToString() return wrong value in C#
我有 double 变量,它的值是:
double d = 0.000000000000056843418860808015;
当我打印这个变量时它打印错了。
d.ToString();
Output : "5.6843418860808E-14"
如何解决?
好吧,如果你想要一个没有指数符号的输出,你需要格式化你的字符串:
d.toString("F25");
这将为您提供最多 25 位小数的 "correct" 号码。
0,0000000000000568434188608
编辑:格式和转换的完整列表可用here,下面是您的快照。
Original value: 1054.32179
F: 1054.32
F0: 1054
F1: 1054.3
F2: 1054.32
F3: 1054.322
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;
我有 double 变量,它的值是:
double d = 0.000000000000056843418860808015;
当我打印这个变量时它打印错了。
d.ToString();
Output : "5.6843418860808E-14"
如何解决?
好吧,如果你想要一个没有指数符号的输出,你需要格式化你的字符串:
d.toString("F25");
这将为您提供最多 25 位小数的 "correct" 号码。
0,0000000000000568434188608
编辑:格式和转换的完整列表可用here,下面是您的快照。
Original value: 1054.32179
F: 1054.32
F0: 1054
F1: 1054.3
F2: 1054.32
F3: 1054.322
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;