Conversão 1.00E-2 -> 0.01

https://pt.stackoverflow.com/questions/251640/converter-nota%C3%A7%C3%A3o-cientifica-em-decimal

by jfcandidofilho

JavaScript

// Glossário
//
// NNC = Número em Notação Científica
// NCE = notação científica de mantissa E
// BASE = obtido de base()
// expoente() = obtém o expoente do número em NCE
// base() = obtém a base do número em NCE
// inteiro() = obtém parte não fracionária da base
// fracao = obtém parte fracionária da base (em números decimais)
// N = número em NCE

// Valores de exemplo
var a = "2.6274846602703e21";
var b = "2.6274846602703e-7";

// Funções de auxílio
var expoente = function( NNC ) { return ( /[e][-0-9]+$/g.exec( NNC ) ).toString().slice(1); };
var base = function( NNC ) { return ( /^\d\.\d+/g.exec( NNC ) ).toString(); };
var inteiro = function( BASE ) { return base( BASE ).slice(0,1); };
var fracao = function( BASE ) { return base( BASE ).slice(2); };

// Converte números em notação científica de mantissa "E" (E = 10) em forma decimal
var conversor_de_nce = function( N ) { 

	// Declaração de variáveis
  var delta, R;

	// Obtém dados necessários
	var e = Number( expoente( N ) );
  var b = base( N );
	var i = inteiro( b );
	var f = fracao( b );

	// Caso de expoentes positivos
  if( e >= 0 ){ 
  
  	// Diferença de dígitos entre a parte fracionária e o valor do expoente
  	delta = f.length - e;

  	return delta > 0 ? i + f.slice( 0, e ) + "." + f.slice( e ) : i + f + "0".repeat( Math.abs( delta ) ) ;
  
	// Caso de expoentes negativos
  } else { return "0." + "0".repeat( Math.abs( e ) - i.length  ) + i + f; }

};


// Exemplos
console.log( "número: \t\t" + a );
console.log( "conversor_de_nce: \t" + conversor_de_nce(a) );

console.log("---");

console.log( "número: \t\t" + b );
console.log( "conversor_de_nce: \t" + conversor_de_nce(b) );