如何在 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 - 2000
或1001 - 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个数,组成新数组的所有情况