pm计算器联盟吧 关注:749贴子:45,525
  • 13回复贴,共1

模拟器精度被角度减法的算法卡住了

只看楼主收藏回复

(EL-506A、EL-506P、EL-546D模拟器系列)
rt,这个东西其实按理来说很简单的,都是正角度的情况下,∠A>∠B,那么直接减;反过来就反着减然后取负数。
问题就在于比较大小这里,我的角度为了提高精度并方便运算,储存方式是bool isNegative; int D; int M; double S。而且可以储存例如123°23333′323.09189″这种奇葩值。
这样比较起来就很麻烦了,要先将其分和秒都规范到60以内,然后再比较。这个还好,我已经写了怎么的程序来处理这个问题了。
但是,我们都知道,double在运算时具有精度问题,那么有没有可能本来是∠A=1°2′62.9999998″,∠B∠A=1°2′63″,∠A<∠B在处理了之后,最后一个double出现精度错误,直接变成∠A=1°3′3.0000000000000002″,∠A=1°3′3.0000000000000001″?这样就很讨厌了。我是真的搞不明白为什么包括Csharp在内的各种编程语言,都要给小数带一个这么烦人的精度问题,搞得我算法都不能好好写


IP属地:浙江1楼2024-04-13 16:44回复
    我现在用的角度减法程序
    当角A<角B时,大部分情况其实也可以正常算,但部分情况下依旧是会出问题的。需要前面做个比较的程序


    IP属地:浙江2楼2024-04-13 16:48
    回复
      要不以后我关于夏普模拟器的事情都发这来好了


      IP属地:浙江3楼2024-04-13 17:00
      回复
        收了一台夏普的EL-506V,很少见的机型,有收藏价值。但是屏幕斑马纸也是有问题的,和我的el-509V一样。这个系列机型的斑马纸都是7308的规格,这种规格根本没办法,烦


        IP属地:浙江4楼2024-04-13 18:18
        收起回复