首页 > 解决方案 > 四舍五入为整数

问题描述

我这里有一个计算付款费用的 HTML 代码。如何将整数值四舍五入?我试过Math.round()了,但还是不行。有没有办法将NaN值替换为零?

<div class="collapse" id="pera-padala">
  <div class="card card-body">
        <div class="form-element">
        <span>B. Input ang amount na ipapadala  </span>
        <input name="entry.1812134286" id="padala-pera"  type="number"  required="">
      </div>
      <br>
       <div class="form-element">
              <span>C. Total Babayaran: <span id="padala-result"></span>



<script src="https://code.jquery.com/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.bundle.min.js"></script>
<script>

    $('#padala-pera').keyup(function(){
           if (jQuery('#padala-pera').val() <= 1000) {
   jQuery('#padala-result').text("₱&quot;.concat(parseFloat($('#padala-pera').val())+30));
}
    else if (jQuery('#padala-pera').val() > 1000) {
   jQuery('#padala-result').text("₱&quot;.concat(parseFloat($('#padala-pera').val())+(parseFloat(jQuery('#padala-pera').val())*.03)));
}
  });
  </script>

这是我的 jsfiddle 链接:https ://jsfiddle.net/sodium05/u3qdyh51/15/

标签: javascripthtmljquery

解决方案


您可以大大简化您的代码。Math.round() 工作正常,但您需要确保将字符串转换为数字(从 HTML 元素派生的任何值都是字符串,即使它来自 Number 元素)。您的代码在某些地方有 parseInt,但在条件句中没有。我喜欢使用+str -> num 转换的速记前缀

$('#padala-pera').keyup(function() {
  let n = +$(this).val()
  if (n <= 1000) n += 30
  else n += n * .03;
  $('#padala-result').text(`₱${Math.round(n)}`)
})
<script src="https://code.jquery.com/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.bundle.min.js"></script>
<div class="collapse" id="pera-padala">
  <div class="card card-body">
    <div class="form-element">
      <span>B. Input ang amount na ipapadala  </span>
      <input name="entry.1812134286" id="padala-pera" type="number" required="">
    </div>
    <br>
    <div class="form-element">
      <span>C. Total Babayaran: 
      <span id="padala-result"></span>
      </span>
    </div>
  </div>
</div>


推荐阅读