Javascript Round函数

时间:2017-11-14 02:59:36

标签: javascript

 Partner.destroy_all(status: 'inactive')

我有一个公式来处理货币值, 但是使用我很难达到相同的效果, 任何想法来解决这个问题?

感谢。

3 个答案:

答案 0 :(得分:3)

舍入很容易实现:

{{1}}

答案 1 :(得分:1)

如果您使用图书馆,lodash有一个方法,_.round(number, [precision=0]) - computes number rounded to precision



console.log(_.round(31283700000, -6));
console.log(_.round(60204605, -4));

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
&#13;
&#13;
&#13;

答案 2 :(得分:1)

这是一个javascript舍入函数,它修复了javascript浮点舍入错误,并处理了你所要求的内容。可以在this post中找到更完整的说明。

this post所述的Javascript浮点错误可能会发生:

  

二进制浮点数学是这样的。在大多数编程中   语言,它基于IEEE 754标准。 JavaScript使用   64位浮点表示,与Java相同   双。问题的关键在于数字代表   这种格式作为整数乘以2的幂;有理数   (例如0.1,即1/10),其分母不是2的幂   无法准确表达。

function round(number, precision) {
  number = +number;
  precision = precision ? +precision : 0;
  if (precision == 0) {
    return Math.round(number);
  }
  var sign = 1;
  if (number < 0) {
    sign = -1;
    number = Math.abs(number);
  }

  // Shift
  number = number.toString().split('e');
  number = Math.round(+(number[0] + 'e' + (number[1] ? (+number[1] + precision) : precision)));
  // Shift back
  number = number.toString().split('e');
  return +(number[0] + 'e' + (number[1] ? (+number[1] - precision) : -precision)) * sign;
}

console.log(round(31283700000, -6)) //31,284,000,000
console.log(round(60204605, -4)) //60,200,000