【问题标题】:How can I have the value round up in javascript?如何在 javascript 中汇总值?
【发布时间】:2015-05-15 04:15:57
【问题描述】:

我有一个将总值插入文本框的代码,但是,执行的数学运算不会对数字进行四舍五入。根据下面的代码,我怎样才能做到这一点?

function calculate(){
    var mrc = document.getElementById('box1');
    var days = document.getElementById('box2');
    var total = document.getElementById('box3');
    var reason = document.getElementById('box4');
    var approver = document.getElementById('box5');
    var approvalreason = document.getElementById('box6');
    var custname = document.getElementById('box7');
    var caseid = document.getElementById('box8');
    var intermitent = document.getElementById('rb1');
    var outage = document.getElementById('rb2');

if (outage.checked === true) {
    if (days.value * 5 > mrc.value){
        total.value = (mrc.value / 30) * days.value;
    } else if (days.value > 14) {
        total.value = (mrc.value / 30) * days.value;
    } else { 
        total.value = days.value * 5;
    } 
    } else if (intermitent.checked === true){
    if (days.value * 3 > mrc.value)
    {
        total.value = (mrc.value / 30) * days.value;
    } else if (days.value > 14) {
        total.value = (mrc.value / 30) * days.value;
    } else {
        total.value = days.value * 3;
    }

}
}

【问题讨论】:

  • 您是否四舍五入到最接近的整数?如果是这样,您只需使用Math.round([number]) 方法。如果你需要它总是四舍五入,你可以使用Math.ceil([number])
  • 您是否尝试搜索[javascript] round number

标签: javascript rounding


【解决方案1】:

两件事:

您使用隐式类型转换是在玩火。 element.value 返回 string,而不是 number,因此您应该使用 parseInt()parseFloat() 将值转换为数字。例如,如果您的输入值为 3,而您输入 element.value + 2,则结果为 32

其次,对于您的问题,Math.ceil() 将浮点数向上舍入到接近整数。

【讨论】:

    【解决方案2】:

    使用 round() 方法将数字四舍五入到最接近的整数。 例子: var a = Math.round(8.70); 答案 a = 9;

    【讨论】:

      【解决方案3】:

      试试下面的代码:

      function toFixed(value, precision) {
      var precision = precision || 0,
          power = Math.pow(10, precision),
          absValue = Math.abs(Math.round(value * power)),
          result = (value < 0 ? '-' : '') + String(Math.floor(absValue / power));
      
      if (precision > 0) {
          var fraction = String(absValue % power),
              padding = new Array(Math.max(precision - fraction.length, 0) + 1).join('0');
          result += '.' + padding + fraction;
      }
      return result;
      }
      
      
      alert(toFixed(1.0000000,3));
      

      以下是小提琴链接: Demo

      【讨论】:

      • 您也可以使用:+(1.00000.toFixed(3))。有一个内置的Number.prototype.toFixed()
      猜你喜欢
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 2015-10-10
      • 1970-01-01
      • 2016-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多