2015-12-16 58 views
0

我想將一些VBA excel代碼轉換爲JS,但即使我確信我的代碼無法正常工作。 以下是這導致我的問題摘錄:從VBA轉換爲Javascript

VBA: Tri1 = Tri1 + 2^(2 - Tour) 
JS: tri1 = tri1 + Math.pow(2, (2 - tour)); 

和:

VBA: If (y And (2^(5 - Tour))) <> (Tri2 And 2^(5 - Tour)) Then 
JS: if ((y && Math.pow(2, 5 - tour)) != (tri2 && Math.pow(2, 5 - tour))) 

和:

VBA: If (Tri1 And 2^(2 - Tour)) = 0 Then 
JS: if ((tri1 && Math.pow(2, 2 - tour)) == 0) 

Tri1導,tri2和y都是整數。

我對JS有很好的理解,但在VBA中沒有。所以我之前已經搜索了很多。

謝謝!

+2

你能澄清一下哪些工作無效嗎?什麼是投入,你期望什麼,你實際得到了什麼? –

+0

我期望得到和VBA一樣的結果...我不能說明太多,因爲我不知道VBA中的輸出是一行一行的。輸入是例如:y = 0到7; tour = 1; tri1 = 0(第一次迭代); tri = 0(第一次迭代);但是,我的「翻譯」是正確的? – Amoeba

回答

2

這不是一個完整的答案,但我認爲這些信息可以幫助您達到目標。因爲你只是想把vba中的單詞翻譯成js。但js不是vba,js有一些特殊的東西。

第一:浮點數

在JS浮動數量並不總是像它看起來像。這個問題會給你更多關於該主題的信息: How to deal with floating point number precision in JavaScript?

由於代碼snipets我不知道你的一個變量是否是一個浮點數。但是,如果你應該知道這個問題。

二:比較

的方式JS是處理的比較是對其他一些語言痘痘有點不同。關於該主題的一些有用的鏈接:

特別的代碼中的比較也不是很清楚。例如:

var a = 10; 
var b = 0; 
document.write((a && b) == 0); // is true 
document.write(a && b) // is 0 
var a = 10; 
var b = 11; 
document.write((a && b) == 0); // is false 
document.write(a && b) // is 11 

這真的是你想要的行爲嗎?所以儘量簡化比較,你的代碼可以工作。

+0

經過這幾個小時的掙扎後,我發現我的錯誤:「和」在VBA中,在這種情況下是「&」在JS中,二元運算符...無論如何 – Amoeba