none
De decimal a notación científica RRS feed

  • Pregunta

  • Hola buenas,

    Escribo para preguntar si alguien nos podría ayudar a mi compañero y a mi en lenguaje c# dentro de Visual Studio. Sin enrollarme más: Como podemos pasar un numero decimal a notación científica.

    Gracias,

    Iván y Arnau

    PD: En resumen estamos haciendo una calculadora en Visual Studio. En caso de querer ver por donde anda el asunto tenemos otra pregunta llamada "Interfaz gráfica de una calculadora". Además de eso, ahí se encuentran otras dudas de lenguaje en c#.

    sábado, 21 de septiembre de 2019 22:09

Respuestas

  • Es bastante sencillo si utilizas un ToString y aplicas el formato estándar "E" que precisamente significa "notación científica".

    double d = 1052.0329112756;
    string formateado = d.ToString("E"); // devuelve "1.052033E+003"

    domingo, 22 de septiembre de 2019 15:57
  • nos da error
    domingo, 22 de septiembre de 2019 20:51
  • nos da error

    ¿Error de compilación? ¿Error en tiempo de ejecución? ¿Cuál es el mensaje de error? Pon aquí un fragmento simplificado de tu código que sea suficiente como para que podamos reproducir el error.

    El que hay en el ejemplo que te puse lo he probado en una aplicación de consola en C# y funciona a la perfección, así que si te da error tienes que haber hecho alguna cosa que no es evidente a la vista del texto de la pregunta. Por lo tanto, tienes que dar muchos más detalles acerca de las circunstancias del error para que podamos resolverlo. No se puede arreglar nada solo con decir "nos da error".

    lunes, 23 de septiembre de 2019 6:33
  • Ya esta resuelto, hemos encontrado el error en la programación. Gracias por su ayuda.

    Necesitamos ayuda con el tema de encadenación de operadores si no es mucha molestia. Te dato aquí lo tratado anteriormente:

    https://www.scribd.com/document/23194492/Como-crear-un-interprete-de-expresiones-en-NET

    Tras releer el artículo por cuarta vez con calma y delicadamente he comprendido al 90% su funcionalidad. Cosas como enum, this. y regex no las entiendo aún y por eso escribo este mensaje. Comprendo como mira si el último valor (que va augmentando de 1 en 1) es un factor (parentesis o la variable en ese programa) en caso de no hacerlo hace una especie de return (una de las cosas que no entiendo) a la comprovación de si es un término (*o/) y finalmente en caso de no ser así comprueba si es (+ o -). Hasta ahí bien. Lo que no consigo entender es luego si es capaz de priorizar un 4+5*6 dado que si lee el mas automáticamente pasa a 9*6.

    En definitiva, no acabo de entender esos tres conceptos de programación, si consigue dar la priorización adequadamente y como retorna al void anterior tras comprovar en otro que el valor no esta.

    Gracias,

    Iván y Arnau

    miércoles, 25 de septiembre de 2019 18:48
  • [...] si es capaz de priorizar un 4+5*6 dado que si lee el mas automáticamente pasa a 9*6

    Sí, lo prioriza adecuadamente. Después del 4+5 no pasa a 9, sino que se van quedando esos datos en stack a causa de las llamadas entre funciones, y no se ejecuta nada hasta que llega al 5*6 y lo convierte en 30 y después lo suma con el 4.

    Lo mejor es que ejecutes el código paso a paso con el debugger, y en cada punto vayas examinando lo que hay en las variables y siguiendo todo lo que va haciendo el programa.

    En caso de duda, es mejor que abras otro hilo y preguntes específicamente sobre esto, ya que no tiene nada que ver con el tema de este hilo. De esa manera, y poniendo un título adecuado, llamará la atención de otros usuarios que podrán tal vez dar una respuesta más clara.

    miércoles, 25 de septiembre de 2019 20:27

Todas las respuestas

  • Es bastante sencillo si utilizas un ToString y aplicas el formato estándar "E" que precisamente significa "notación científica".

    double d = 1052.0329112756;
    string formateado = d.ToString("E"); // devuelve "1.052033E+003"

    domingo, 22 de septiembre de 2019 15:57
  • nos da error
    domingo, 22 de septiembre de 2019 20:51
  • nos da error

    ¿Error de compilación? ¿Error en tiempo de ejecución? ¿Cuál es el mensaje de error? Pon aquí un fragmento simplificado de tu código que sea suficiente como para que podamos reproducir el error.

    El que hay en el ejemplo que te puse lo he probado en una aplicación de consola en C# y funciona a la perfección, así que si te da error tienes que haber hecho alguna cosa que no es evidente a la vista del texto de la pregunta. Por lo tanto, tienes que dar muchos más detalles acerca de las circunstancias del error para que podamos resolverlo. No se puede arreglar nada solo con decir "nos da error".

    lunes, 23 de septiembre de 2019 6:33
  • Ya esta resuelto, hemos encontrado el error en la programación. Gracias por su ayuda.

    Necesitamos ayuda con el tema de encadenación de operadores si no es mucha molestia. Te dato aquí lo tratado anteriormente:

    https://www.scribd.com/document/23194492/Como-crear-un-interprete-de-expresiones-en-NET

    Tras releer el artículo por cuarta vez con calma y delicadamente he comprendido al 90% su funcionalidad. Cosas como enum, this. y regex no las entiendo aún y por eso escribo este mensaje. Comprendo como mira si el último valor (que va augmentando de 1 en 1) es un factor (parentesis o la variable en ese programa) en caso de no hacerlo hace una especie de return (una de las cosas que no entiendo) a la comprovación de si es un término (*o/) y finalmente en caso de no ser así comprueba si es (+ o -). Hasta ahí bien. Lo que no consigo entender es luego si es capaz de priorizar un 4+5*6 dado que si lee el mas automáticamente pasa a 9*6.

    En definitiva, no acabo de entender esos tres conceptos de programación, si consigue dar la priorización adequadamente y como retorna al void anterior tras comprovar en otro que el valor no esta.

    Gracias,

    Iván y Arnau

    miércoles, 25 de septiembre de 2019 18:48
  • [...] si es capaz de priorizar un 4+5*6 dado que si lee el mas automáticamente pasa a 9*6

    Sí, lo prioriza adecuadamente. Después del 4+5 no pasa a 9, sino que se van quedando esos datos en stack a causa de las llamadas entre funciones, y no se ejecuta nada hasta que llega al 5*6 y lo convierte en 30 y después lo suma con el 4.

    Lo mejor es que ejecutes el código paso a paso con el debugger, y en cada punto vayas examinando lo que hay en las variables y siguiendo todo lo que va haciendo el programa.

    En caso de duda, es mejor que abras otro hilo y preguntes específicamente sobre esto, ya que no tiene nada que ver con el tema de este hilo. De esa manera, y poniendo un título adecuado, llamará la atención de otros usuarios que podrán tal vez dar una respuesta más clara.

    miércoles, 25 de septiembre de 2019 20:27