2016-02-03 4 views

ответ

11

Если вы хотите номер, используйте % 10 изолировать место в своем численном:

var onesOnly = number % 10; 

Если вы хотите строку, можно преобразовать число в строку и использовать .substr(-1), чтобы получить только последнюю цифру:

var lastDigit = String(number).substr(-1); 

Примечание: Оба метода будут ненадежными с очень большими номерами (по разным причинам). Это не проблема, которую вы будете иметь, если ваш номер никогда не будет превышать 99, но если другие используют эту же технику с большими числами, то стоит отметить:

Цифровой подход может упасть из-за того, что номера JavaScript являются IEEE-754 с плавающей запятой с двойной точностью («двойной»), даже если они являются целыми числами. Самый высокий надежный значение целого числа, которое может содержать double, равно 9007199254740991, после чего у нас заканчиваются значимые биты, и он начинает становиться неточным даже на уровне целого числа: 9007199254740993 % 10 - это 2, а не 3, так как double не может держите значение 9007199254740993 точно.

Метод текста не соответствует научной нотации: очень большие числа преобразуются в строку с использованием научной нотации. Например, 5823548469823234783234852 преобразуется в "5.823548469823234e+24". Следовательно, String(5823548469823234783234852).substr(-1) дает нам 4, а не 2.

Конечно, к тому моменту, когда вы сталкиваетесь с проблемой научной нотации, вы уже имеете дело с цифрами, которые настолько неточны (первая проблема), что это вторичная проблема.

+0

Престижность для ответа CW –

+0

@JamesThorpe: Казалось, что нужно. :-) –

+0

@ T.J.Crowder Да, возможно, это лучший способ на данный момент. Невозможно предотвратить ответ на эти Qs, может также сделать это так, чтобы, по крайней мере, остановить половину проблемы :) –

Смежные вопросы