none
¿Como convertir float a int en c#? RRS feed

  • Pregunta

  • Hola lo que pasa es que tengo el siguiente codigo, el cual dibuja una linea manipulable con un trackbar en mi form, pero al momento de compilar, me dice que no se puede convertir float a int, lo raro es que en visual basic net si funciona, pero al pasarlo a c# deja de trabajar, me gustaria que me dijeran que es lo que se encuentra mal en el siguiente codigo.

    for (i = 0; i <= lineValues.Length - 1; i++) {
                    pt[i] = new Point(iPlots * i, iCentre - ((lineValues[i] * (iCentre - 1)) / 12));

                        }

    apartir de la instruccion new genera el error que cite antes, si me pueden ayudar.

    Gracias

    viernes, 26 de julio de 2013 21:49

Respuestas

  • lo raro es que en visual basic net si funciona,

    en vb.net funciona porque seguramente no tienes habilitada la opcion Option Strict

    habilitala y vas a ver como deja de funcionar

    me gustaria que me dijeran que es lo que se encuentra mal en el siguiente codigo.

    pero alli no se puede ver de que tipo son las variables: pt, iCentre, iPlots

    quizas debas hacer

    pt[i] = new Point(Convert.ToInt32(iPlots * i), Convert.ToInt32(iCentre - ((lineValues[i] * (iCentre - 1)) / 12)));

    o sea cada calculo lo conviertes al tipo int, pero ojo valida si es que el valor se llega a redondear

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta Homero1225S domingo, 4 de agosto de 2013 21:26
    sábado, 27 de julio de 2013 1:47

Todas las respuestas

  • No puedes convertir implicitamente un float en un int, debes hacer un cast explícito.

    static void Main(string[] args)
    {
        float f = 4.3f;
        int a = (int)f;
    }

    Insertando el cast a (int) ya funcionará. Un saludo!


    Vicente Cartas Espinel - MVP XNA/DirectX

    Blog about C# and XNA Development

    Blog about Role Playing Games

    viernes, 26 de julio de 2013 21:57
  • has intentado con estoconvert toint32

    Alex_87

    viernes, 26 de julio de 2013 23:53
  • lo raro es que en visual basic net si funciona,

    en vb.net funciona porque seguramente no tienes habilitada la opcion Option Strict

    habilitala y vas a ver como deja de funcionar

    me gustaria que me dijeran que es lo que se encuentra mal en el siguiente codigo.

    pero alli no se puede ver de que tipo son las variables: pt, iCentre, iPlots

    quizas debas hacer

    pt[i] = new Point(Convert.ToInt32(iPlots * i), Convert.ToInt32(iCentre - ((lineValues[i] * (iCentre - 1)) / 12)));

    o sea cada calculo lo conviertes al tipo int, pero ojo valida si es que el valor se llega a redondear

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta Homero1225S domingo, 4 de agosto de 2013 21:26
    sábado, 27 de julio de 2013 1:47
  • intente como dice Leandro, pero no sirvio de mucho, lo que vi, es que tenia una variable en float declarada, por eso no funcionaba la conversion, solo la converti a int, y funciono inmediatamente. de igual manera Gracias por sus respuestas
    • Editado Homero1225S domingo, 4 de agosto de 2013 21:31
    domingo, 4 de agosto de 2013 21:30