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比较,个人认为这只是取了最精确的精度值,跟上面的方法本质是一样的,不知道理解的是否正确,欢迎大家拍砖。

转载于:https://www.cnblogs.com/lyfe/archive/2013/01/03/2843434.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值