一个本来应该得到205.0的数却得到了204.999985的结果
于是我在调试的时候用几种方法算了一下,结果是这样的
首先说明里面的参数
arraylist对应的那个值为8.2如果不用(float)会说缺少强制转换然后YSlice的值是0.4所以82/0.4的结果应该是20.5但是*10以后结果本应该是205.0,却成了204.999985我直接把8.2/0.4的结果拿来*10又没有问题,说明问题出在8.2/0.4*10上直接/0.4也是不对的,说明不是变量引用的问题直接*25也没有问题*10/0.4也出现问题,说明就是这两个一起的时候会有问题这种情况该怎么解决啊调试float计算c#
于是我在调试的时候用几种方法算了一下,结果是这样的
首先说明里面的参数
arraylist对应的那个值为8.2如果不用(float)会说缺少强制转换然后YSlice的值是0.4所以82/0.4的结果应该是20.5但是*10以后结果本应该是205.0,却成了204.999985我直接把8.2/0.4的结果拿来*10又没有问题,说明问题出在8.2/0.4*10上直接/0.4也是不对的,说明不是变量引用的问题直接*25也没有问题*10/0.4也出现问题,说明就是这两个一起的时候会有问题这种情况该怎么解决啊调试float计算c#
解决方案 »
- excel导出
- 问题
- 怎么判断指定窗体是否为激活状态
- RadioButtonList.Attributes.Add("onclick","return confirm ();");的onClick属性返回值能否作为服务器端cs逻辑判断的依据
- 如何是datagrid或者dataview的列能移动啊?
- wse 2.0
- 委托的BeginInvoke怎么用?
- 如果是你,你会怎么做??~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~``
- 为什么我连一个简单的 Hello World 程序都没有实现!郁闷!
- 小小问题,不过值得一看
- 三道面试题,你会 做吗?
- c# win cs程序每次开机都得重新生成?
计算过程中用decimal,画线时强转一下即可。decimal的精度比float和double要高,虽然不是绝对安全的,但是基本上能满足你的要求,在你找到如何避免累积误差的解决方案之前。
计算过程中用decimal,画线时强转一下即可。decimal的精度比float和double要高,虽然不是绝对安全的,但是基本上能满足你的要求,在你找到如何避免累积误差的解决方案之前。
我用double计算,画图的时候强制转换成float就满足需求了
只是现在又有别的问题了,哎
不过是计算方法的问题,自己琢磨吧