Javascript函数默认错误答案(我认为)

时间:2017-04-22 20:58:44

标签: javascript modulus

嗨,有人可以告诉我为什么即使插入超过17个数字,我的函数输出也会默认为?它可能非常简单,请放轻松我!

function oddOrEven(number) {
  var number = document.getElementById('number').value;
    if(number % 2 != 0) {
    document.getElementById('demo').innerHTML = "Odd";
    } 
  
  else {
    document.getElementById('demo').innerHTML = "Even";
    } 
  if (number.length === 0) {
    document.getElementById('demo').innerHTML = "Odd / Even";
  }
}

1 个答案:

答案 0 :(得分:-1)

你可以简化这一切。如果您总是使用ID'数字'来抓取输入。你不需要通过一个参数,然后在一个简单的测试后你可以内联你想要的答案:

    @Override
    public void onImageAvailable(ImageReader reader) {

        Log.d(TAG, "I'm an image frame!");

        Image image =  reader.acquireNextImage();

        ...

        if (image != null)
            image.close();
    }

所有这一切,我刚刚发现你正在谈论17位数(感谢@JJJ的评论),而不是多次使用该功能。这种情况下的问题是JS整数有一个大小限制。如果你解析任何更大的东西,它会返回一个你不会期望的数字。这里有很多关于非常大数字的一般处理的讨论:http://2ality.com/2012/07/large-integers.html,但是对于你的模数问题,你可以取最后一位数并检查它是否奇怪甚至是这样:

function oddOrEven(){
   var val = document.getElementById('number').value;
   var number = parseInt(val, 10);
   // if it's not a valid number, you'll have NaN here which is falsy
   if (number) {
      document.getElementById('demo').innerHTML = (number % 2) ? "Even" : "Odd";
   }
}