Pregunta

He escrito una pequeña función en C, que casi hacen el mismo trabajo que la función `standart fcvt'. Como ya sabrán, esta función toma un flotador / doble y crea una cadena, que representa este número de caracteres ANSI. Todo funciona; -)

Por ejemplo, para el número 1.33334, mi función me da cadena: "133334" y establecieron especial variable entera `decimal_part', en este ejemplo será de 1, lo que significa en la parte decimal sólo el 1 símbolo, todo lo demás es una fracción .

Ahora estoy curioso sobre lo que debe hacer la función standart C `printf'. Se puede tomar un% o% e como cadena de formato. Citemos por% e (enlace desechó):

  
    

"doble" argumento se emite en notación científica

         

[-] m.nnnnnne + xx

         

... El exponente siempre contiene dos dígitos.

  

Se dice: "El exponente siempre contiene dos dígitos". Pero lo que es un exponente? Esta es la cuestión principal. Y también, cómo conseguir este 'exponente' de mi función anterior o desde `fcvt'.

¿Fue útil?

Solución

La notación podría ser mejor explicado si ampliamos el e:

[-]m.nnnnnn * (10^xx)

Por lo que tiene un dígito de m (de 0 a 9, pero siempre será solamente 0 si todo el valor es 0), y varios dígitos de n. Supongo que sería mejor para mostrar con ejemplos:

1 = 1.0000 * 10^0 = 1e0
10 = 1.0000 * 10^1 = 1e1
10000 = 1.0000 * 10^4 = 1e4
0.1 = 1.0000 * 10^-1 = 1e-1

1,419 = 1.419 * 10^3 = 1.419e3
0.00000123 = 1.23 * 10^-5 = 1.23e-5

Se puede consultar la notación científica fuera de Google, pero es útil para expresar números muy grandes o pequeños como 1232100000000000000 sería 1.2321e24 (que en realidad no cuentan, exponente puede ser inexacta).

En C, creo que en realidad se puede extraer el exponente de los 12 bits superiores (el primero es el signo que tendrá que pasar por alto). Ver: IEEE758-1985 punto flotante

Otros consejos

El exponente es la potencia 10 se eleva a continuación, multiplicado por la base.

SI se explica en wikipeida. http://en.wikipedia.org/wiki/Scientific_notation

m.nnnnnne+xx es lógicamente equivalente a m.nnnnnn * 10 ^ +xx

En la notación científica, el exponente es el diez a la potencia XX, por lo 1234,5678 se puede representar como 1.2345678E03 donde la forma normalizada se multiplica por 10 ^ 3 para obtener la respuesta "real".

400 = 4 * 10 ^ 2

2 es el exponente.

Si se escribe un número en notación científica a continuación, el exponente es parte de esa notación.

Se puede ver una descripción completa aquí http://en.wikipedia.org/wiki/Scientific_notation , pero básicamente es sólo otra manera de escribir un número, generalmente utilizada para números muy grandes o muy pequeñas.

Supongamos que tiene el número 300, que es igual a 3 * 100, o 3 x 10 ^ 2 en notación científica.

Si utiliza% e se va a imprimir como 3.0e + 02

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top