C# int 型减double 的出了更多的小数位

   var angle1 = 360 - angle;//angle=290.73
     // angle1得出的结果是  69.269999999999982???

这什么情况???

整型和浮点型的存储方式不一样

整数转成浮点数会出现一定的误差,这次计算是先转成浮点数再计算的

0.3用二进制表示的时候是循环小数(0.01001100110011001100110011001100110011001100110011......),再次转换为10进制就有了误差。

存储小数的时候,二进制表示是一个非精确的表示,这是二进制和十进制转换的误差所致;
你可以有两种方式:
1. 继续用目前这种,最后结果进行四舍五入处理;
2. 将小数临时变整数 ,再计算:(360*100-290.73*100)/100
图片说明