2016-10-14 3 views
-1

У меня есть математическое уравнение, которое я должен решить, прежде чем применять его к функции.Математический расчет Я хочу решить перед выполнением функции

У меня есть следующее уравнение по математике, что я хочу, чтобы решить, чтобы верно:

console.log((3*(d[0]+d[3]+d[6])+7*(d[1]+d[4]+d[7])+1*(d[2]+d[5]+d[8]))%10 === 0); 

Вот дословное выражение:

console.log((3*(2+0+5)+7*(7+8+2)+1*(1+1+8))%10 === 0); 

Буквальное выражение решает верно, но выражение с переменными, которые вставляют те же цифры, что и буква, приводит к ложному.

Может ли кто-нибудь сказать мне, почему?

+1

* "но выражение с переменными [...] приводит к ложному" * - потому что переменные не имеют того же значения, которое, по вашему мнению, они делают. Если бы они это сделали, выражения были бы идентичны. – deceze

+0

В этом случае 'd' выглядит иначе, чем вы думаете. – Seb

+0

Запустите быструю проверку реальности на ваших предположениях: 'd.forEach ((x, i) => console.log (i, typeof (x), x))' –

ответ

2

Я предполагаю, что d - это строка, и вы хотите рассчитать контрольную сумму. В этом случае вам нужно преобразовать все данные строки в Number и затем выполнить тест с dNum.

dNum = d.split('').map(Number); 
+0

Разумное предположение. Аккуратная карта. –

+0

Спасибо, Дэвид. Сопоставление номера сделало это! – cnak2

Смежные вопросы