【发布时间】:2011-08-03 11:32:20
【问题描述】:
好的,我知道这可能真的很容易,但我很困惑.. 我有一系列变量,其中有一个小数点和几个零。如何剥离变量,使其从 1.000 变为 1 ?不要认为这很重要,但数字是从我用 jquery 抓取的 xml 文件生成的......
var quantity = $("QTY",this).text();
提前感谢您的帮助!
【问题讨论】:
标签: javascript jquery xml frontend strip
好的,我知道这可能真的很容易,但我很困惑.. 我有一系列变量,其中有一个小数点和几个零。如何剥离变量,使其从 1.000 变为 1 ?不要认为这很重要,但数字是从我用 jquery 抓取的 xml 文件生成的......
var quantity = $("QTY",this).text();
提前感谢您的帮助!
【问题讨论】:
标签: javascript jquery xml frontend strip
简单地说……
Math.round(quantity);
...假设您要将1.7 舍入为2。如果没有,请使用Math.floor 将1.7 转换为1。
【讨论】:
使用parseInt();
parseInt("1.25");//returns 1
parseInt("1.85");//returns 1
parseInt(1.25);//returns 1
parseInt(1.85);//returns 1
【讨论】:
【讨论】:
要将数字四舍五入到最接近的整数,您可以使用Math.round(),如下所示:
Math.round("1.000"); // Will produce 1
Math.round(123.4234); // Will produce 123
【讨论】:
parseInt 是最慢的方法 math.floor 是第二慢的方法
此处未列出的更快方法是:
var myInt = 1.85 | 0; 我的整数 = 1;
var myInt = 1.85 >> 0; 我的整数 = 1;
在这里完成的速度测试: http://jsperf.com/math-floor-vs-math-round-vs-parseint/2
【讨论】:
| 和>> 运算符感到好奇的人,您可以在MDN 上了解更多信息。注意:The operands of all bitwise operators are converted to signed 32-bit integers in two's complement format.
这是另一个很好的例子:
我经常使用Math.round 和 toLocateString 将包含小数位的数字转换为更易读的字符串,带有千位分隔符:
var myNumberAsString = "1234567.890123" // "1234567.890123"
var myNumber = Math.round(0.0 + myNumberAsString); // 1234568
return myNumber.toLocaleString(); // "1,234,568"
我发现这在从 JSON Web 服务加载十进制值并需要在网页上以更友好的格式显示它们时很有用(当然,我不需要显示所有小数位)。
【讨论】:
使用number = ~~number
这是Math.floor()的最快替代品
【讨论】:
使用Math.trunc()。它完全按照您的要求进行。它去掉了小数点。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc
【讨论】:
一种更快、更有效的方法是使用 JavaScript 的 bitwise operators,如下所示:
function stripDecimals(n) {
return n | 0;
}
// examples:
stripDecimals(23.245); // => 23
stripDecimals(100.015020); // => 100
|(OR 运算符)会将数字视为 32 位(二进制 0s 和 1s),然后根据 操作数返回所需的结果,在这种情况下会导致一个 整数 去掉所有小数位。
【讨论】:
我建议你使用一个叫做Math.trunc()...的东西,把你的号码放在括号里。我不建议您使用Math.round() 的原因是它可能会更改您的十进制数的整数部分,尽管您可以使用Math.round(),如果您知道要获得最接近的整数。
【讨论】:
Math.trunc() 和 ~~ 删除 decimal part 对 integer part 没有任何影响。
例如:
console.log(Math.trunc(3.9)) // 3
console.log(~~(3.9)) // 3
所以在你的情况下:
console.log(Math.trunc(quantity))
console.log(~~(quantity))
【讨论】: