2013-07-05 2 views
2
var number = 1.2; 
var rounded = number.tofixed() + 2 

Я пытаюсь подвести tofixed значение с любым числом, но используя код выше, я был schoked закругленные = 12 .... Интересно, почему это Безразлично Не суммируйте и как это исправить?tofixed() + 2 действует как tofixed + «2»

Здесь находится скрипка example.

спасибо.

+7

Ну, 'toFixed' возвращает строку (как вы можете увидеть в [MDN документации] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed)). Не имеет смысла вызывать этот метод перед добавлением. Если вы хотите округлить число, используйте 'Math.round' (или' Math.floor' или 'Math.ceil'). –

+1

Вы можете поставить унарный оператор '+' перед 'number.toFixed()', чтобы преобразовать его на лету обратно в объект 'Number':' var rounded = + number.toFixed() + 2; '. Но, как говорит Феликс, функция округления/перекрытия/потолка - это, вероятно, то, что вы ищете. – ajp15243

ответ

3

Похоже, вы хотите округлить? Используйте Math.floor вместо toFixed.

var number = 1.2; 
var floored = Math.floor(number) + 2 

Если вы действительно хотите использовать округляемой цифра Math.round().

4

У JavaScript нет номеров фиксированной запятой. toFixed returns a string. Номер эквивалент Math.round:

Math.round(1.2) + 2 // 3 
+0

Я также ответил с помощью round(), но затем, прочитав больше об этом, раунд будет округлен от 2.49 до 2.5. Не уверен, хочет ли OP то, что – Huangism

+0

Что вы прочитали? Работает для меня: http://ideone.com/S01HpV. [Спецификация ES5 говорит] (http://es5.github.io/#x15.8.2.15), «Возвращает значение« Число », которое ближе всего к * x * и равно математическому целому числу». – s4y

+0

@Huangism 'Math.round (2.49)' дает мне '2' на консоли Chrome, поэтому мне также интересно, где вы это читаете. – ajp15243

3

Float.toFixed() возвращает строку. (docs) Строка + int преобразует int в строку и объединяет две строки. Чего вы хотите:

(number + 2).toFixed(); 
+0

Спасибо за вашу идею, я не упомянул, что мне нужно + 2 точно после округления. – Mike

+2

Это добавит ровно 2 к вашему ответу. Добавление int к float может вызвать очень небольшое количество впечатлений, но, поскольку вы все равно округляете его, вы никогда этого не заметите. Если вы хотите округлить до добавления 2, ответ Sidnicious может быть лучшим для вас. – Sumurai8

0
number = 1.2 
number= number+2 
rounded = number.toFixed() ; 

tofixed метод возвращает ответ в виде строки, так что вы можете добавить первый, а затем круглый

0

Преобразовать полученную строку в целое число:

$(document).ready(function(){ 
    number = 1.2 
    rounded = parseInt(number.toFixed()) + 2; 
    alert(rounded); 
}) 
1

tofixed возвращает ответ как строку, вам нужно будет преобразовать его обратно в число, если вы хотите сделать математическое число на нем.

var number = 1.2; 
var rounded = parseFloat(number.tofixed()) + 2; 
Смежные вопросы