C#判断是否为浮点数的整数倍
C#判断浮点型数据是否为浮点型数据的整数倍
因为取余%符号对double型数据是不起作用的,比如0.6%0.2 的结果并不为0,这是由于浮点运算的精度所导致的,基本的想法是,先把两个数右移同样的位数,变成正整数后,再用取余符号。
代码:
class DoubleTest { public void StartTest() { double aaa = 17632.23; double div = 1.2; string straaa = aaa.ToString(); string strdiv = div.ToString(); string [] strArrya =straaa.Split('.'); string[] strArrydiv = strdiv.Split('.'); double power=0; //要右移的位数 if (strArrya.Length == 2 && strArrydiv.Length == 2) { power = Math.Max(strArrya[1].Length, strArrydiv[1].Length); } else if(strArrya.Length ==2) { power = strArrya[1].Length; } else if (strArrydiv.Length == 2) { power = strArrydiv[1].Length; } else { power = 0; } double x = System.Math.Pow(10,power); int intaaa = (int)System.Math.Round(aaa * x); int intdiv = (int)System.Math.Round(div * x); if (intaaa % intdiv == 0) { Console.WriteLine("yes"); } Console.Read(); } }