PHP7 + JavaScript, 62 61 58 Bytes
Das war tatsächlich schwieriger als ich erwartet hatte! Ich bin ziemlich überrascht, wie lang mein Code ist.
eval(['alert((_=prompt())*_)','echo$argv[1]**.5'][+![]]);
Wie funktioniert es?
Dies funktioniert, indem Sie den auszuführenden Code aus dem Array auswählen.
Die Erkennung von PHP und JavaScript erfolgt mit +![].
In PHP ist [](leeres Array) ein falscher Wert, während es in JavaScript ein wahrer Wert ist (Objekte (außer null) sind immer wahr, sogar new Boolean(false)wahr!).
Aber ich muss es auf einen numerischen Wert bringen, also verwende ich einfach ein not( !) und konvertiere es in eine Ganzzahl (mit dem +).
Jetzt liefert PHP den Wert 1, während JavaScript liefert 0.
Durch Platzieren des Codes in einem Array an diesen Indizes können wir den richtigen Code für die gewünschte Sprache auswählen.
Dies kann verwendet werden [JS,PHP][+![]], um den Code der richtigen Sprache zu erhalten.
Bei früheren Polyglotten habe ich verwendet '\0'=="\0", was truein JavaScript (da \0als NULL-Byte analysiert wird) und falsein PHP (die '\0'nicht als NULL-Byte analysiert werden, um die Zeichenkette zu vergleichen \0mit dem NULL-Byte).
Ich bin froh, dass ich es geschafft habe, diesen Scheck auf zu reduzieren +!'0'.
Umso mehr freue ich mich über @rckd , das es auf die aktuelle Version reduziert hat!
Von da an ist es einfach evalder Code, der benötigt wird.
PHP
PHP wird ausgeführt echo$argv[1]**.5(entspricht der echo sqrt($argv[1]);Quadratwurzel der Zahl), erhält den Wert aus dem 2. Argument und zeigt ihn in der Standardausgabe an.
JavaScript
Es wird JavaScript ausgeführt alert((_=prompt())*_), das die quadrierte Zahl in einem anzeigt alert.
Vielen Dank an @rckd für das Speichern von 1 Byte und @ user59178 für das Speichern von 3 Byte!