当我打电话给#34; ToString()"时,我有一个大约27个有效数字的浮点数。我得到" 6.8248054E + 26",我如何得到确切的正常值?
答案 0 :(得分:8)
我知道您希望显示使用float
的27位有效数字 和 。你可以这样做:
f.ToString("F27");
但真的,他们只是不匹配。考虑使用decimal
来实现这种精确度:
decimal dc = 91.123142141230131231231M; //your 27-digit figure:
dc.ToString("F27");
答案 1 :(得分:6)
var number = 0.111111111100000000000000000;
string result = String.Format("{0:#,0.###########################}", number);
这将显示截至27日的所有小数位,但省略所有尾随零。因此,上述数字将显示为0.1111111111。
答案 2 :(得分:2)
试试这个。
number.ToString("F27");
答案 3 :(得分:2)
问题不在于您使用的格式。它取决于数据类型的精确度。
来自MSDN:
float
的精度为7位数。另一方面,decimal
的精度为28-29位。
话虽如此,如果您将值分配给decimal
类型的变量,即使您在没有任何字符串格式的情况下调用ToString()
方法,您也可以获得所需的内容。
dc = 6.8248054E+26M;
Console.WriteLine(dc.ToString()); // returns the whole thing including any trailing zero(s)
答案 4 :(得分:-2)