C# float/double 减 float/double 等 (X.xxxxxxxxxxxxxE-07)(黑盒测试)

问题

因为没有深究原理,所有只进行了“黑盒测试”

黑盒测试结论:

问题操作结论
float/double运算进过一系列的运算后大概率  != 0.0  ,
而是等于0.00000000000xxxx
等于X.xxxxxxxx一串数字的时候不影响下一步继续使用
当需要显示float/double的时候进行一次 “保留N位运算”
Mach.Round(float, n)
String.Format("{0:F2}", 1.0f); //  结果 1.00

代码

 void ChangeFormat(){double aaa = 2.2f;double bbb = 2.0f;double ccc = aaa - bbb;// double ddd = ccc - 0.2d;// double ddd = 2.2f - 2.0f - 0.2d; // 这个与上方的结果一样double ddd = 2.2d - 2.0d - 0.2; // 这个与上方的结果一样string str1 = String.Format("{0:F2}", ddd);Debug.Log(ddd);                 // 结果 1.66533453693773E-16Debug.Log(ddd + 0.001d);        // 结果 0.00100000000000017Debug.Log(Math.Round(ddd, 2));  // 结果 0Debug.Log((int)ddd);            // 结果 0Debug.Log(str1);                // 结果 0.00// 测试:4.76837158092103E-07 是否大于 0if (ddd > 0){Debug.Log("得到: 1.66533453693773E-16  > 0");}// ddd + 0.001f 为什么 +0.001// 因为:经过测试得 1.66533453693773E-16 == 0// 所以:+0.001, 还原显示数值 (一般只要小数两位)}

输出结果