2012-06-21 4 views
-5

Qu'est-ce que la fonction SIGN (double x, double y) faire en langage C++ et comment traduire en C#fonction SIGN (double x, double y) C++

+0

ce n'est pas un signe (double) qui renvoie le signe du nombre celui-ci prend deux arguments et je ne peux pas le trouver nulle part sur le net –

+0

Peut-être parce que ce n'est pas une fonction C++ standard. – mfontanini

+0

Quelle bibliothèque C++ utilisez-vous? – MiJyn

Répondre

1

Dans le code C++ vous traduisez C#, recherchez une définition de macro ou une définition de fonction en ligne pour SIGN. La définition devrait préciser exactement comment vous devriez l'implémenter en C#.

Si je devais deviner le nom, SIGN(x,y) renvoie true si x et y ont le même signe, et faux sinon.

2

Une fonction qui existe comme dans Fortan http://gcc.gnu.org/onlinedocs/gfortran/SIGN.html

SIGN(A,B) returns the value of A with the sign of B. 

If B >= 0 then the result is ABS(A), else it is -ABS(A). 

Peut-être que quelqu'un a mis en œuvre la même fonction en C++ (mais la coutume quelque chose, pas une partie standard de C++ ou les bibliothèques standard).

A C# version de ce serait

A = Math.Abs(A); 
    if (B<0.0) A = -A; 
+0

Si 'A = B = -1' alors' A * Math.Sign (B) 'n'aura pas le même signe que' B'. – aioobe

+0

merci, à la hâte, éditera. – hatchet

+1

'Math.Abs ​​(A) * Math.Sign (B)' devrait faire. – aioobe

0

La bibliothèque standard C n'a pas de fonction SIGN(). Votre question ne donne pas assez d'informations pour que je vous dise avec certitude ce que c'est SIGN(), mais C++ succède à l'ancien langage de programmation C, et mon intuition informée est que SIGN() est une macro préprocesseur définie dans l'ancien style C.

Recherchez votre code pour une ligne qui commence #define SIGN, éventuellement avec plus d'un espace entre le #define et le SIGN. Si vous trouvez la ligne, il est susceptible de vous dire ce que votre SIGN() est et fait.