Функция javascript trunc() Я хочу усечь число в javascript, что означает вырезать десятичную часть: trunc (2.6) == 2 trunc (-2.6) == -2 После тяжелого бенчмаркинга мой ответ: function trunc (n) { return ~~n; } // or function trunc1 (n) { return n | 0; } Ответ 1 В качестве дополнения к @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; Ответ 2 Для положительных чисел: Math.floor(2.6) == 2; Для отрицательных чисел: Math.ceil(-2.6) == -2; Ответ 3 Вы можете использовать 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 Ответ 4 Я использую function trunc(n){ return n - n % 1; } потому что он работает по всему диапазону с плавающей запятой и должен (не измерен) быть быстрее, чем function trunc(n) { return Math[n > 0 ? "floor" : "ceil"](n); }
Ответ 1 В качестве дополнения к @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;
Ответ 2 Для положительных чисел: Math.floor(2.6) == 2; Для отрицательных чисел: Math.ceil(-2.6) == -2;
Ответ 3 Вы можете использовать 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
Ответ 4 Я использую function trunc(n){ return n - n % 1; } потому что он работает по всему диапазону с плавающей запятой и должен (не измерен) быть быстрее, чем function trunc(n) { return Math[n > 0 ? "floor" : "ceil"](n); }