Errore nei calcoli del Framework?

di Rubik il
6 risposte
Discrepanze tra il calcolo di potenze negative in VB.Net e C#.
Con valori diretti o passati da variabile.

        Dim s As Double = -2
        Console.WriteLine(Math.Pow(s, 2)) '  = 4
        Console.WriteLine(Math.Pow(-2, 2)) '  = 4
        Console.WriteLine(s ^ 2) '  = 4
        Console.WriteLine(-2 ^ 2) ' = -4
        Console.ReadLine()
in C# Math.Pow e ^ da risultati diversi

        var s = -2; // double da errore perché?
        Console.WriteLine(Math.Pow(s, 2)); // = 4
        Console.WriteLine(Math.Pow(-2, 2)); // = 4
        Console.WriteLine(s ^ 2); // = -4
        Console.WriteLine(-2 ^ 2); // = -4
        Console.ReadLine();
Mi aspetto che -2^2=4 o no? potenze dispari di numeri negativi risultato negativo, potenze pari risultato positivo...
Qesta da 4
https://www.calculator.net

6 Risposte

  • La precedenza
    Console.WriteLine((-2) ^ 2)
    In C# ^ è l'XOR
  • Weierstrass ha scritto:


    In C# ^ è l'XOR
    eh già.
    Spiega anche perché, se dichiaravo la variabile double, dava errore.
  • Te l'ho scritto prima il perché: -2^2 fa -4. ^ ha priorità pù alta del meno unario
  • ... anche svolgendola a mano:

    -2^2 = -1 * 2^2=-1*4 (perchè l'elevamento a potenza ha la precedenza ) = -4
  • Rubik ha scritto:



    in C# Math.Pow e ^ da risultati diversi
    Scusa Rubik ma è roba basilare... perché hai pensato che era il framework prima di approfondire un attimo?
  • Mah.. la calcolatrice mi ha rovinato, e il post è stato frettoloso, la spiegazione di Weierstrass, mi ha rinsavito istantaneamente.
Devi accedere o registrarti per scrivere nel forum
6 risposte