浮点运算总是存在精度问题,bb-aa-cc 的实际结果可能不是0而是一个非常小的数,例如-3E-17什么的。因此直接比较常常出现精度造成的困扰,一般不采取此方式,最好是用类似下面的方式来替代:
if( fabs(bb-aa-cc)<=某个合理的小数值 )
double aa = 0.09;
double bb = 0.11;
double cc = 0.02;
if (bb*100 - aa*100 == cc*100)
{
Console.WriteLine("cha{0}:", "1111");
}
用乘以10的几次方的方法,把小数都变成整数,然后在判断。
这是因为计算机是2进制的关系,所以小数总是存在着精度问题,这时可以把小数都变成整数,然后再判断。
不要用非整数进行等价判断,因为计算机无法准确的处理小数
可以把double*100 然后转换为整数判断
我在.NET4下测试,如果是输出bb-aa和cc都是0.02,就是在if比较时候就有问题了...
扩大10n倍数,我认为不是什么明智之举。
我认为可以ToString比较,可以将一个double直接变成一个字符串
如: double x=3.14159000 // 3.14159,而不是3.14159000
如果你觉得【h123a】的方法好 又担心多位小数的话
你可以不乘100 小数点有几位你就乘1后面有几个0
用indexof(".") 来取小数点后有几位