我想将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
。它可能是123
或1234234614
。在这两种情况下,我仍然需要1.23
或1.234234614
答案 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;
}