在Javascript中将int 12345转换为float 1.2345

时间:2015-03-04 21:53:46

标签: javascript math

我想将12345变成1.2345

这有不同的数字。

这是我到目前为止所做的,而且它有效,它不是很漂亮,看起来像是一个黑客。

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()只接受一个参数(指数)并将其应用于Eulers常量。 Returns Ex, where x is the argument, and E is Euler's constant (2.718…), the base of the natural logarithm.

除以10000之后,作为数字的工作并不总是只有12345。它可能是1231234234614。在这两种情况下,我仍然需要1.231.234234614

2 个答案:

答案 0 :(得分:3)

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

你需要将n除以10 ^ x,其中x是数字的“长”。原来数字的长度只是数字对数的最低值。

答案 1 :(得分: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;
}