Funkcja działa dla zmiennoprzecinkowych, ale zwraca niepoprawne wartości dla int

0

Okej, więc chce narysować wykres funkcji, iteruje sobie po osi xów, jest super, aż tu nagle patrzę:

302ba3d840.png

myślę, łotaafak? :o a tu się okazuje że dla liczb całkowitych (i o dziwo połówek) funkcja mi dziwnie mnoży przez 10 :/

c2bea1a2f6.png

Oto kod, jak dodam bardzo małą liczbę tak że x już nie jest całkowity, problem znika. Widocznie z jakiegoś powodu zmienna musi być doublem :| pisanie 1.0 * x zamiast x nie pomaga.

    function Function(a,b,c) {
        this.a = a;
        this.b = b;
        this.c = c;
        this.valueOf = function(x) {
        //    x += 0.000000001;
            return this.a*x*x + this.b*x + this.c;
        }
    }

  // ...

            for (var i = range.min; i <= range.max; i++) {
                xx =  horizontalStep * i;
                yy = this.scale * func.valueOf(xx / this.scale);
                console.log((xx/this.scale) + " => " + yy);
                if (i == range.min) {
                    ctx.moveTo(center.x + xx, center.y - yy);
                    continue;
                }
                ctx.lineTo(center.x + xx, center.y - yy);
            }

Ja już nie rozumiem jak ten js działa :c halp

0

a już myślałem, że odgłosy z kosmosu Cię naszły :) wykres funkcji zapewne miał być parabolą (bo łatwiej) elipsy trudnej (dlaczego - zapytajcie matematyków - pewnie chodzi o dwa wyniki przy iteracji).
Zdaje się, że niepoprawnie interpolujesz wyniki na obszar wyświetlania - i tyle.

1 użytkowników online, w tym zalogowanych: 0, gości: 1