javascript范围计算

osh3o9ms  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(247)

我这里有一个带有脚本的html页面,我怎样才能得到这个条件的总数?输入范围1-1000的最小充电量为15。后续范围为输入值+最大范围的1.5%。例如,如果我输入2300,属于2000-2500范围,则总数将为2338,达到其最大范围的1.5%。

$('#padala-pera').keyup(function() {
  let iv = +$(this).val();
  let num;
  if (iv <= 1000) num = 15;
  else {
    let times = Math.ceil(iv / 500);

    if (times % 2 == 0) {
      num = 15 + Math.ceil((iv - 1000) / 500) * 8;
    } else {
      num = 15 + Math.ceil((iv - 1000) / 500) * 7;
    }

    let result = iv + num;
    $('#padala-result').text(`₱${Math.ceil(result)}`);
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id='padala-pera' />
<div id='padala-result'></div>

为了清楚起见,这里是要计算的费用范围和金额。

ilmyapht

ilmyapht1#

您的代码可以简化为单行计算:

let val = +$(this).val();
let total = val + Math.ceil((Math.ceil(Math.max(500.01, val) / 500.0) * 500) * 0.015)

细分: +$(this).val() 确保val是一个数字 Math.max(500.01, val) 不存在0-500的情况,因此在计算 1.5% 最多可达到1000个范围 Math.ceil(Math.max(500.01, val) / 500.0) * 500 四舍五入到最接近的500 * 0.015 加1.5% (1.5 / 100) (最接近的500个) val + ... 将原始值添加回

$('#padala-pera').keyup(function() {
 let val = +$(this).val();
 let total = val + Math.ceil((Math.ceil(Math.max(500.01, val) / 500.0) * 500) * 0.015);
  $('#padala-result').text(`${Math.ceil(total)}`);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id='padala-pera' />
<div id='padala-result'></div>

相关问题