Why am I getting the wrong result when using float?
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicates:
Why is (double)0.6f > (double)(6/10f)?
Why is floating point arithmetic in C# imprecise?
我在C中有以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace StackOverflow { class Program { static void Main(string[] args) { float num1 = 17.03F; float num2 = 17F; float result = num1 - num2; Console.WriteLine(result); } } } |
代码工作正常,但我没有得到预期的结果。有人能解释为什么会这样吗?
我想你指的是浮点运算引起的偏差。您可以在提供的链接中阅读。
如果你真的需要100%精确的计算,你可以用
这个怎么样?:每个计算机科学家都应该知道什么是浮点运算
浮点数学可能包含四舍五入近似值,请参阅本网站上的许多重复问题,或阅读此处:
http://en.wikipedia.org/wiki/浮点数
因为你用的是
我猜你得到的结果是0.02999999?