我要截斷在JavaScript的數字,這意味着切去小數部分:JavaScript的TRUNC()函數
TRUNC(2.6)== 2
TRUNC(-2.6)= = -2
基準我的回答後重是:
function trunc (n) {
return ~~n;
}
// or
function trunc1 (n) {
return n | 0;
}
我要截斷在JavaScript的數字,這意味着切去小數部分:JavaScript的TRUNC()函數
TRUNC(2.6)== 2
TRUNC(-2.6)= = -2
基準我的回答後重是:
function trunc (n) {
return ~~n;
}
// or
function trunc1 (n) {
return n | 0;
}
作爲除@Daniel的答案,如果你想一直向零取整,您可以:
function truncate(n) {
return n | 0; // bitwise operators convert operands to 32-bit integers
}
或者:
function truncate(n) {
return Math[n > 0 ? "floor" : "ceil"](n);
}
兩個會給你兩個,正確的結果正數和負數:
truncate(-3.25) == -3;
truncate(3.25) == 3;
http://jsperf.com/javascript-trunc – Dan
對於正數:
Math.floor(2.6) == 2;
對於負數:
Math.ceil(-2.6) == -2;
您可以使用toFixed方法還允許指定要顯示十進制數的數量:
var num1 = new Number(3.141592);
var num2 = num1.toFixed(); // 3
var num3 = num1.toFixed(2); // 3.14
var num4 = num1.toFixed(10); // 3.1415920000
只需注意toFixed回合數:
var num1 = new Number(3.641592);
var num2 = num1.toFixed(); // 4
舍入意味着它不會被截斷。還要注意,toFixed返回一個字符串 –
我用
function trunc(n){
return n - n % 1;
}
,因爲它工作在整個浮動範圍,應該(不計)比
function trunc(n) {
return Math[n > 0 ? "floor" : "ceil"](n);
}
輝煌!你的方式只是稍微快一點,但它更緊湊,這也會對性能產生影響。更好的是,我不必使用函數調用,我可以嵌入(n - n%1)內聯!我一直在使用(n | 0),但只適用於低於32位大小的數字,而不是完整的64位浮點範圍。我從現在開始使用它,謝謝! –
http://jsperf.com/truncate-0 – Dan
注意,按位方法快(例如,~~ n或n | 0)僅適用於最多2^31-1或2147483647的數字。2147483648或更高版本將返回不正確的結果;例如,2147483647 | 0返回-2147483648和4294967295 | 0返回-1,這幾乎絕對不是您想要的 –