C# 按原样显示浮动的格式字符串是什么?

C# 按原样显示浮动的格式字符串是什么?,c#,C#,我有一个大约27位有效数字的浮点,当我调用“ToString()”时,我得到了“6.8248054E+26”,我如何得到准确的正常值 var number = 0.111111111100000000000000000; string result = String.Format("{0:#,0.###########################}", number); 这将显示第27位之前的所有小数,但省略所有尾随的零。因此,上面的数字将显示为0.1111111。试试这个 number.

我有一个大约27位有效数字的浮点,当我调用“ToString()”时,我得到了“6.8248054E+26”,我如何得到准确的正常值

var number = 0.111111111100000000000000000;
string result = String.Format("{0:#,0.###########################}", number);
这将显示第27位之前的所有小数,但省略所有尾随的零。因此,上面的数字将显示为0.1111111。

试试这个

number.ToString("F27");

我知道您希望显示27位有效数字和您使用的
float
。您始终可以这样做:

f.ToString("F27");
但实际上,它们就是不匹配。考虑使用<代码>十进制< /代码>实现该精度:

decimal dc = 91.123142141230131231231M; //your 27-digit figure:
dc.ToString("F27");

问题不在于你使用什么格式。这完全取决于数据类型的精度

从MSDN:

精度为7位。另一方面,其精度为28-29位

也就是说,如果将值赋给类型为
decimal
的变量,即使调用
ToString()
方法而不使用任何字符串格式,也会得到想要的结果

dc = 6.8248054E+26M;
Console.WriteLine(dc.ToString()); // returns the whole thing including any trailing zero(s)

使用浮动,您将无法获得该精度

无论如何,您应该使用“F”或“N”格式设置程序,它们将根据您的需要打印数字

dc = 6.8248054E+26M;
Console.WriteLine(dc.ToString()); // returns the whole thing including any trailing zero(s)

您可以在此处检查所有格式:

请在问题中更加清楚。您能举一个您试图实现的示例吗?我稍微澄清了一下问题您知道浮点精度只有7位有效数字,对吗?也就是说,您无法获得所需的27位有效数字!考虑使用<代码>十进制< /代码>我不需要浮点精度,我需要大量的非十进制有效数字。这看起来很糟糕,没有其他的方法可以实现相同的代码。哪一个?使用F27总是显示27位数字,并且不修剪尾随的零向下投票人请包括向下投票的原因,没有任何原因向下投票是不公平的。如果我尝试,会发生什么?为什么你在回答之前没有试过?@ThomasWeller,因为OP没有提供完整的代码和测试套件,所以在OP中尝试是不可能的。这个答案与我的想法相同。;)向上投票。是的,我还认为需要十进制来保持精度。