Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中将int 12345转换为float 1.2345_Javascript_Math - Fatal编程技术网

在Javascript中将int 12345转换为float 1.2345

在Javascript中将int 12345转换为float 1.2345,javascript,math,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 有没有什么东西能让我的小数

我想把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()
返回Ex,其中x是参数,E是欧拉常数(2.718…),自然对数的底。

除以
10000
不起作用,因为数字并不总是
12345
。它可能是
123
1234234614
。在这两种情况下,我仍然需要
1.23
1.23423614

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;
}

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

你考虑过除以10000吗?@RaymondChen-Hoare定律。:-)@当然是雷蒙陈。但不一定是10000。查询可能是123,除以10000不起作用。在这一点上,我需要除以100。fun的正则表达式f=function(x,n){var r=x.match(/^(-)(\d+)(.d+)(.d+)/),dec=r[2]+(r[3]?r[3]。slice(1):“”;如果(n!==未定义)dec=dec.slice(0,n);返回r[1]+'.+dec+'e'+r[2]。length}f('-12345.678'完美的a+表示简单。@BrianNoah当然。你可以做到。我已经做得足够彻底了,如果你需要的话,你会得到这两个部分。仅供参考,我在node.js中这样做,它已经删除了log10(或者只是没有添加它),我必须做
Math.log(number)/Math.log(10)
,以便log10@BrianNoah图书馆中的一个缺陷的优雅解决方案+1.
function f(n){
    return n/(Math.pow(10, Math.floor(Math.log10(n))));
}