C# 按原样显示浮动的格式字符串是什么?
我有一个大约27位有效数字的浮点,当我调用“ToString()”时,我得到了“6.8248054E+26”,我如何得到准确的正常值C# 按原样显示浮动的格式字符串是什么?,c#,C#,我有一个大约27位有效数字的浮点,当我调用“ToString()”时,我得到了“6.8248054E+26”,我如何得到准确的正常值 var number = 0.111111111100000000000000000; string result = String.Format("{0:#,0.###########################}", number); 这将显示第27位之前的所有小数,但省略所有尾随的零。因此,上面的数字将显示为0.1111111。试试这个 number.
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中尝试是不可能的。这个答案与我的想法相同。;)向上投票。是的,我还认为需要十进制来保持精度。