可能重复:
Why is (double)0.6f > (double)(6/10f)?
Why is floating point arithmetic in C# imprecise?
我在C#中有以下代码:
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);
}
}
}
代码工作正常,但我没有得到预期的结果。有人可以解释为什么会这样吗?
答案 0 :(得分:3)
我猜你引用Floating point arithmetics引起的偏差。您可以在提供的链接中阅读。
如果您确实需要使计算100%准确,则可以使用decimal
代替float
。
答案 1 :(得分:1)
因为您使用的是float
。 Float是一个非常接近的值。在比较时,请始终使用Epsilon(最大误差允许值)。
我猜你得到的结果= 0.02999999?
答案 2 :(得分:1)
浮点数学可能包含舍入近似值,请参阅本网站上的许多重复问题,或在此处阅读:
答案 3 :(得分:1)