2015-01-21 2 views
0

Я программист-любитель, пишущий простые программы HTML/Javascript, и я недавно столкнулся с чем-то, что я не могу объяснить. У меня есть небольшая программа, которая устанавливает время начала и окончания встречи. Формат - HHMMSS для обоих. Я запрограммировал время начала, которое мне нужно, например 103000 или 123000, а затем написал строку кода, чтобы добавить 10000, чтобы получить время окончания. Это работало нормально, пока я не пробовал 073000 + 10000. Результат, а не 083000 (или не менее 83000), оказался 40208.Javascript math error with leading zeroes

Я бы написал проблему как проблему с ведущим 0, но 093000 + 10000 = 103000, что я и ожидал. Что происходит с 073000 + 10000 = 40208?

Я исправил программу по-другому, но я в тупике от этого. Большое спасибо за любое объяснение, которое вы можете предоставить.

Вот некоторые простой код из W3Schools, который производит 40208 в результате добавления:

<!DOCTYPE html> 
<html> 
<body> 

<button onclick="myFunction()">Try it</button> 

<p id="demo"></p> 

<script> 
function myFunction() { 
    var x = 073000 + 10000; 
    document.getElementById("demo").innerHTML = x; 
} 
</script> 

</body> 
</html> 
+0

Убедитесь, что '«использовать строгий»',. потому что в противном случае '073000 = 30208' – elclanrs

+0

elclanrs, вы можете добавить свой комментарий в ответ, и плакат узнает, почему это происходит. Я не знаю, или я бы сам комментарий. –

+0

@SteveMitcham, не стесняйтесь, чувствуя себя ленивым здесь, и не нашел общих дубликатов. – elclanrs

ответ

3

Числа с ведущим 0 являются восьмеричные числа таким же образом числа с ведущими 0x шестнадцатеричные цифры:

01 = 1 
02 = 2 
... 
07 = 7 
010 = 8 
011 = 9 

Обычно 09 вызывает синтаксическую ошибку, поскольку 9 не является восьмеричной цифрой (точно так же, как e не является десятичной цифрой). Но, по-видимому, большинство браузеров в эти дни автоматически обнаруживают это как десятичное вместо того, чтобы поднимать ошибку.


Примечания: В строгом режиме, используя восьмеричный синтаксис (начиная ряд с ведущими 0 вызывает синтаксическую ошибку, потому что восьмеричное синтаксис не является частью стандарта ECMAscript

+0

Спасибо за информацию. У меня не было i деа, в чем проблема. – Matt

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

  • Нет связанных вопросов^_^