-1

指定された tempMaxAngle より小さい 90 桁の除数を見つける関数を作成しようとしています。たとえば、関数は tempMaxAngle=7 の場合は 6、tempMaxAngle=31 の場合は 30、tempMaxAngle=23 の場合は 22.5 などを返す必要があります。残念ながら、正しく機能していません。奇妙な値が返されます。ここに私のアルゴリズムがあります:

function maxAngle = angletest(tempMaxAngle)
    format long g;
    tempMaxAngle = tempMaxAngle*10;
    tempMaxAngle = floor(tempMaxAngle)/10;
    while mod(90,tempMaxAngle)>0
        modResult =mod(90,tempMaxAngle)
        tempMaxAngle = tempMaxAngle - 0.1
    end
    maxAngle=tempMaxAngle;
end

tempMaxAngle=7 の部分的な結果 (セクションの結果):

tempMaxAngle =

                   6.9


modResult =

     0.299999999999995


tempMaxAngle =

                   6.8


 modResult =

      1.59999999999999


tempMaxAngle =

                   6.7


modResult =

      2.89999999999998


tempMaxAngle =

                   6.6


modResult =

      4.19999999999998


tempMaxAngle =

                   6.5


modResult =

      5.49999999999998


tempMaxAngle =

                   6.4


modResult =

     0.399999999999966


tempMaxAngle =

                   6.3


modResult =

      1.79999999999996


tempMaxAngle =

                   6.2


modResult =

      3.19999999999997


tempMaxAngle =

                   6.1


modResult =

      4.59999999999996


tempMaxAngle =

                     6


modResult =

      5.99999999999995


tempMaxAngle =

                   5.9


modResult =

      1.49999999999994


tempMaxAngle =

                   5.8


modResult =

      2.99999999999993


tempMaxAngle =

                   5.7


modResult =

      4.49999999999993


tempMaxAngle =

      5.60000000000001


modResult =

     0.399999999999929

単純な 6.9、6.8、6.7 などのモジュロ関数ではなく、そのような値を返し続けるのはなぜですか? どうすれば修正できますか?

4

1 に答える 1