如何在 Javascript 中取整整数值

Posted

技术标签:

【中文标题】如何在 Javascript 中取整整数值【英文标题】:How to floor integer value in Javascript 【发布时间】:2012-11-13 03:50:59 【问题描述】:

听起来很奇怪,但我现在需要这个。实际上我有一个这样的数组:

var arr = new Array(123, 432, 98, 227, 764);
var max = Math.max.apply(Math, arr); //calculate max = 764
var min = Math.min.apply(Math, arr); //calculate min = 123

现在我必须根据最小值和最大值制作几个范围:

 100 - 200 // as the min is 123 (range 100 ~ 200) 
 201 - 300
 301 - 400
 401 - 500
 501 - 600
 601 - 700
 701 - 800 // as the min is 764 (range 700 ~ 800)

确定范围只是一个循环问题。但是计算我实现的最小值和最大值的范围:

function integerRound (digit) 
    var i = 0, msb; 
    while( digit > 0 ) 
      msb = digit % 10;
      digit = Math.floor( digit / 10 );
      i++;
    
    while ( i > 1 ) 
      msb = msb + '0';
      i--;
    ;
    return msb;


var lowerMin = integerRound(min); // 100
var lowerMax = integerRound(max); // 700

我的问题是 - 在 javascript 或 jQuery 中有什么好的方法吗?

【问题讨论】:

除以 100,取商的底,再乘以 100。 @AlvinWong 我认为这并不是真正的重复,因为这个问题实际上是关于分类的,尽管用于实现的机制是模运算。 那么...您想要1001 - 20001001 - 1100 来获取四位数字吗? 【参考方案1】:

鉴于这个用例本质上是一个世纪的分类,是否有一些原因你不能简单地删除无关的部分:

century = value - (value % 100)

如果您确实需要从 201 开始的范围,以此类推,那么只需在执行之前减去一个,然后返回一个以进行更正。

value -= 1;
century = value - (value % 100) + 1

【讨论】:

+1。我的回答比 OP 采用了更少的迂回方式,但它仍然太迂回了。这确实是正确的方法。 我的数组值可以在很大范围内变化。 Arr可以包含5个甚至352626 当然...这仍将分为 0 和 352600 的世纪。如果这不是您所期望的行为,请澄清问题。【参考方案2】:

这个怎么样:

var max = parseInt(Math.max.apply(Math, arr) / 100) * 100;
var min = parseInt(Math.min.apply(Math, arr) / 100) * 100

先把数字除以100只得到小数点前的有效数字,用parseInt截断(去掉小数点后的所有数字,不重要的数字),然后再乘以100使值回到正确的量级.

【讨论】:

看SAJ14SAJ的回答,这样更好。 也非常感谢您的帮助。 SAJ14SAJ 的解决方案已修复 :) @Ben Lee

以上是关于如何在 Javascript 中取整整数值的主要内容,如果未能解决你的问题,请参考以下文章

用java实现 枚举从数组arr中取n个数,组成新数组的所有情况

请问JavaScript如何从function中取变量?

java里取余的问题

javascript中如何将获得的整型数值转换为字节数组

在java中,在一个类中取Application的对象如何取?

JavaScript 如何决定为数值分配多大的内存?