【发布时间】:2014-09-30 23:22:14
【问题描述】:
也许我遗漏了一些东西,但 float.ToString() 方法会舍入数字,这让我很头疼。
看看下面的小代码:
当输入 12345678 作为输入时,调试器中的浮点数是正确的,但 ToString 方法的输出是 12345680(我尝试过的任何格式...)
Console.WriteLine("Please enter a float number");
float theFloat = float.Parse(Console.ReadLine());
Console.WriteLine(string.Format("You have entered {0}", theFloat.ToString("F")));
还有输出:
Please enter a float number
12345678
You have entered 12345680.00
我们将不胜感激!
【问题讨论】:
-
@MatthewWatson 不错的评论,指向一个大约 1000 页的文档,非常有帮助^^
-
@MatthewWatson 我没有,我的意思是在没有线索的情况下将某人发送到具有该大小的文档并且不知道要查找什么通常不是很有帮助(即使他正在寻找的东西是一开始)至少你可以说明在哪里寻找......
-
@MeAndSomeRandoms 这种事情通常是为答案保留的,而不是 cmets。
-
我很快就在文档中找到了这个宝石 - “将无限多个实数压缩成有限位数需要一个近似表示。......给定任何固定位数, 大多数实数计算将产生无法用那么多位精确表示的量。因此,浮点计算的结果必须经常四舍五入以适应其有限表示。这种舍入误差是浮点计算。”
标签: c# string floating-point