繁体   English   中英

从变量中去除小数点

[英]strip decimal points from variable

我有一系列具有小数点和几个零的变量。 如何剥离变量,使其从 1.000 变为 1?

我不认为这有那么重要,但这些数字是从我用 jquery 抓取的 xml 文件生成的,例如:

var quantity = $("QTY",this).text();

只是...

Math.round(quantity);

...假设您想将1.7舍入为2 如果不是,请对1.7 to 1使用Math.floor

使用parseInt();

parseInt("1.25");//returns 1
parseInt("1.85");//returns 1
parseInt(1.25);//returns 1
parseInt(1.85);//returns 1

使用number = ~~number

这是Math.floor()的最快替代品

parseInt是最慢的方法math.floor是第二慢的方法

此处未列出的更快的方法是:

var myInt = 1.85 | 0; myInt = 1;

var myInt = 1.85 >> 0; myInt = 1;

在这里完成速度测试: http : //jsperf.com/math-floor-vs-math-round-vs-parseint/2

使用Math.trunc() 它确实满足您的要求。 它去除小数点。

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc

为了将数字四舍五入到最接近的Integer,可以使用Math.round()如下所示:

Math.round("1.000"); // Will produce 1
Math.round(123.4234); // Will produce 123

您不需要jQuery。

您可以使用parseInt很好。 从页面:

document.write(parseInt("10.33") + "<br />"); // 10

这是另一个很好的例子:

我经常使用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 Service加载十进制值时,我发现这很有用,并且需要在网页上以更友好的格式显示它们(当然,当我不需要显示所有小数位时)。

一种更快,更有效的方法是使用JavaScript的按位运算符 ,如下所示:

function stripDecimals(n) {
     return n | 0;
}

// examples:
stripDecimals(23.245); // => 23
stripDecimals(100.015020); // => 100

| (OR运算符)会将数字视为32位 (二进制0s1s ),然后根据操作数返回所需的结果,在这种情况下,结果将是一个除去所有小数位的整数

我建议您使用称为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))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM