2016-03-19 38 views

回答

2

是的,您可以使用基數爲8的parseInt()並將其轉換爲八進制數,然後再以Number#toString()作爲基數。

請在這裏看看:Numbers and dates。八進制數的使用取決於嚴格模式。

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

+0

爲什麼我們需要將其轉換爲字符串?我很困惑,爲什麼'parseInt(15,8)+ parseInt(6,8)'顯示'19' –

+1

好吧,在'ES6'中它只是稍微另一個語法'0o15 + 0o6 == 19 && 0o15 + 0o6 = = 0o23' – isvforall

0

可以使用減少,如果有很多計算來完成,或者@龔如心的答案...

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

如果表達式中不僅有「+」運算符會怎麼樣? 因爲我們可以使用正則表達式/ \ + | \ - /,但我們如何在計算時定義當前操作。 此外,我希望有更優雅的方式來計算表達式(不分裂) –

1

使用ES6標準:

在ECMAScript 6中,通過在前綴「0o」的數字支持八進制數。

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