关于c#:为什么我在使用float时得到错误的结果?

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%精确的计算,你可以用decimal代替float


这个怎么样?:每个计算机科学家都应该知道什么是浮点运算


浮点数学可能包含四舍五入近似值,请参阅本网站上的许多重复问题,或阅读此处:

http://en.wikipedia.org/wiki/浮点数


因为你用的是float。float是一个非常近似的值。进行比较时,请始终将其与epsilon(最大误差允许值)一起使用。

我猜你得到的结果是0.02999999?