2015-03-04 1 views
-3

Я хочу повернуть 12345 в 1.2345Включите int 12345 в float 1.2345 в Javascript

Это разные цифры.

Вот что я сделал до сих пор, и это работает, это просто не очень красиво и кажется взломанным.

var number = 12345 
> 12345 
var numLength = number.toString().length 
> 5 
var str = number +'e-' + (numLength - 1) 
> "12345e-4" 
var float = parseFloat(str) 
> 1.2345 

Есть ли что-то, что только моя десятичная точка назад 4 места?

Я попытался

Math.pow(number, -4) 
> 4.3056192580926564e-17 

и он не приходит с тем, что мне нужно еще немного.

Math.exp() принимает только один аргумент (показатель степени) и применяет его к константе Эйлера. Returns Ex, where x is the argument, and E is Euler's constant (2.718…), the base of the natural logarithm.

Разделение на 10000 не будет работать как число не всегда будет 12345. это может быть 123 или 1234234614. В обоих случаях мне еще нужно 1.23 или 1.234234614

+7

Рассматривали ли вы деление на 10000? –

+0

@RaymondChen Закон Хоара. :-) – GolezTrol

+0

@RaymondChen Конечно. Но это не всегда 10000. Запрос может быть 123, и деление на 10000 не будет работать. В этот момент мне нужно разделить на 100. –

ответ

1
function getBase10Mantissa(input) { 
    // Make sure we're working with a number. 
    var source = parseFloat(input); 
    // Get an integer for the base-10 log for the source value (round down in case of 
    // negative result). 
    var exponent = Math.floor(Math.log10(source)); 
    // Raise 10 to the power of exponent and divide the source value by that. 
    var mantissa = source/Math.pow(10, exponent); 
    // Return mantissa only (per request). 
    return mantissa; 
} 
+1

@BrianNoah Конечно. Вы можете сделать это. Я был достаточно доволен, что у вас будут две части, если они вам понадобятся. –

+1

FYI, я делаю это в node.js, который удалил log10 (или просто не добавил его), и мне нужно сделать 'Math.log (number)/Math.log (10)', чтобы получить log10 –

+1

@BrianNoah Элегантное решение проблемы с недостатком в библиотеке. +1 –

2
function f(n){ 
    return n/(Math.pow(10, Math.floor(Math.log10(n)))); 
} 

Вы должны разделить п на 10^х, где х, как «длинный» это число. Оказывается, длина номера - это только пол логарифма числа.

+0

совершенный. a + для простоты. –