为什么这种转换不正确?

时间:2016-10-23 04:53:37

标签: javascript math

这是假设将转换后的数字作为整数返回。该部分有效,但不能转换正确的转换。

var input = prompt('Please enter your temp in fahrenheit');

function converter (){
   var x = Math.round(input - 32 * 5/9);
   console.log(x);
   return x;
}
alert('The temp in celsius is: ' + converter());

4 个答案:

答案 0 :(得分:2)

将华氏温度转换为Celcius的公式为T(°C)=(°F - 32)×5/9。您遇到了操作顺序问题。这应该有用。

{{1}}

答案 1 :(得分:2)

你错过了这个问题,这迫使operator precedence接管了计算。

var input = prompt('Please enter your temp in fahrenheit');

function converter() {
  var x = Math.round((input - 32) * 5 / 9);
  console.log(x);
  return x;
}
alert('The temp in celsius is: ' + converter());

答案 2 :(得分:1)

试试这个:

(input - 32) * (5 / 9);

答案 3 :(得分:1)

由于运算符优先级而无法正确转换,JavaScript运算符优先级从最高(20)变为最低(0),乘法/除法的优先级为14,而Subtraction的优先级为13,因此括号(优先级为20) )需要标记应首先执行哪个表达式。

$(document).ready(function () {
  $('#celsius').on('input', function (event) {
    var celsius = $('#celsius').val();
    var fahrenheit = celsiusToFahrenheit(celsius);
    $('#fahrenheit').val(fahrenheit);
  });
  
  $('#fahrenheit').on('input', function (event) {
    var fahrenheit = $('#fahrenheit').val();
    var celsius = fahrenheitToCelsius(fahrenheit);
    $('#celsius').val(celsius);
  });
  
  function celsiusToFahrenheit(celsius) {
    if (celsius === undefined || celsius === null) {
      return celsius;
    }
    
    var fahrenheit = celsius * 9/5 + 32;
    
    return fahrenheit.toFixed(5);
  }
  
    function fahrenheitToCelsius(fahrenheit) {
    if (fahrenheit === undefined || fahrenheit === null) {
      return fahrenheit;
    }
    
    var celsius = (fahrenheit - 32) * 5/9;
      
    return celsius.toFixed(5);
  }
});
.form-group {
  float: left;
  margin: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="form-group">
  <label>Celsius</label>
  <input type="text" id="celsius"/>
</div>
<div class="form-group">
  <label>Fahrenheit</label>
  <input type="text" id="fahrenheit"/>
</div>