在数字结果中仅显示两位小数

时间:2013-10-22 04:05:34

标签: javascript html textfield

我在下面有这个JavaScript代码,用于获取三个文本字段的总和值。 显示结果时,我需要显示两位小数。请帮我。 我已经尝试了很多方法来获取小数位但却找不到方法。

<script type="text/javascript">
      function num(id) {
          var e = document.getElementById(id);
          if (e != null) {
              var v = e.value;
              if (/^\d+$/.test(v)) {
                  return parseInt(v, 10);
              }
          }
          return 0;
      }

      function sum() {
          var v1 = num("contNo6_1");
          var v2 = num("contNo6_2");
          var v3 = num("contNo6_3");

          var r  = document.getElementById("result");
          r.toFixed(2);

          if (r != null) {
              r.value = v1 + v2 + v3;
          }
      }

      function addHandler(element, eventName, handler) {
          if (element.addEventListener) {
              element.addEventListener(eventName, handler, false);
          } else if (element.attachEvent) {
              element.attachEvent("on" + eventName, handler);
          }
      }

      addHandler(window, "load",
                 function() {
                   addHandler(document.getElementById("contNo6_1"), "keyup", sum);
                   addHandler(document.getElementById("contNo6_2"), "keyup", sum);
                   addHandler(document.getElementById("contNo6_3"), "keyup", sum);
                 });
    </script>

2 个答案:

答案 0 :(得分:0)

您可以在js中使用toFixed方法。

var value = 10.123349;
var valueWithTwoDecimal = value.toFixed(2);

/*******
Output : 10.12
*******/

http://jsfiddle.net/Aveendra/KggSC/

答案 1 :(得分:0)

您的num()函数返回整数或零,因此您永远不会显示小数位。更改num()以处理这样的浮点数:

function num(id) {
      var e = document.getElementById(id);
      if (e != null) {
          var v = e.value;
          if (/^[0-9]{1,}\.?[0-9]*$/.test(v)) {  // New regex to accept
                                                 // number with decimal point
             return parseFloat(v);               // parse for Float instead of Int
          }
      }
      return 0;
  }

这里是updated fiddle