2016-03-19 8 views
0

Zum Beispiel habe ich die folgende Zeichenfolge:JavaScript berechnet Ausdruck in Oktal radix

15+6 

Ich mag diesen Ausdruck in Oktal radix berechnen. So will ich bekommen:

23 

Gibt es irgendeine Funktion in js, um diesen Fall zu unterstützen? Wenn nicht, was ist der beste Ansatz, um den oktalen Ausdruck zu berechnen?

Antwort

2

Ja, Sie können parseInt() mit Radix 8 verwenden und mit Radix wieder in Oktal mit Number#toString() konvertieren.

Bitte schauen Sie hier: Numbers and dates. Die Verwendung von Oktalzahlen ist abhängig vom strikten Modus.

document.write((parseInt(15, 8) + parseInt(6, 8)).toString(8) + '<br>');

+0

warum tun wir es als eine Zeichenfolge konvertieren? Ich bin so verwirrt, warum 'parseInt (15, 8) + parseInt (6, 8)' '19' anzeigt –

+1

Ok, in' ES6' ist es nur leicht eine andere Syntax '0o15 + 0o6 == 19 && 0o15 + 0o6 = = 0o23' – isvforall

0

Sie reduzieren können, wenn es viele Berechnungen durchgeführt werden, oder @ Ninas Antwort ...

var str = '15+6'; 
var res = str.split('+').reduce(function(a,b){ 
    return a + parseInt(b, 8) 
}, 0).toString(8) 
console.log(res) // 23 
+0

Was ist, wenn es nicht nur einen "+" Operator im Ausdruck gibt? Natürlich können wir regex/\ + | \ -/verwenden, aber wie wir die aktuelle Operation während der Berechnung definieren können. Ich hoffe auch, dass es elegantere Möglichkeiten gibt, Ausdrücke zu berechnen (ohne zu splitten) –

1

Mit ES6 Standard:

In ECMAScript 6 wird die Oktalnummer unterstützt, indem eine Zahl mit "0o" vorangestellt wird.

var result = 0o15 + 0o6; 
 
document.write(result.toString(8));