C#中浮点数的比较

前几天去面试,被问到怎么比较两个浮点数的大小,当时只说了个大概,看得出来面试官不是太满意,回来特意查了一下,在MSDN上发现了比较浮点数是否相等的不错的方法:

// Initialize two doubles with apparently identical values
double double1 = .33333;
double double2 = (double) 1/3;
// Define the tolerance for variation in their values
double difference = double1 * .0001;

// Compare the values
// The output to the console indicates that the two values are equal
if (Math.Abs(double1 - double2) <= difference)
   Console.WriteLine("double1 and double2 are equal.");
else
   Console.WriteLine("double1 and double2 are unequal.");

 

上段代码中定义了一个比较精度,两个浮点数的差在此精度误差之中,就可以认为相等。

至于两个浮点数的大小比较,我认为直接用double1 > double2这种格式就可以了,看到网上有人将double1和double2的差和double.Epsilon比较,个人认为这只是取了最精确的精度值,跟上面的方法本质是一样的,不知道理解的是否正确,欢迎大家拍砖。

posted on 2013-01-03 22:30  那句诺言  阅读(9980)  评论(0编辑  收藏  举报

导航