30
EL ALCOHOL ES MALO…
Filed Under (Sin categoría) by PoliMalo on 30-01-2006
… y sino que se lo digan al pobre animal…
30
… y sino que se lo digan al pobre animal…
29
Todo aquel que haya picado algunas lineas de código en algúm momento ha tenido que leer un fichero, y esto es una verdad como un templo.
En C y C++ de toda la vida, para leer datos de un fichero se ha utilizado el "fopen" y el "fscanf", o considerado el método clásico. También "más modernos" están la serialización y los streams, pero los dejaré de lado.
Con "fscanf", si queríamos leer un número en coma flotante era algo tal que así:
fscanf(f,"%f",&numero);
La comodidad del sistema es que era directamente complatible con "fprintf", que por norma general era con lo que se realizaba la salida al fichero. Y cómodo porque se realizaba en formato texto, con lo que era sencillo cargalo con un editor de texto y ver el contenido.
¿Todo esto a qué biene? Pués que hasta ahora la parte decimal de un número flotante estaba separada de la parte entera con un ".", como por ejemplo "3.1415".
Pero cosas que tiene la vida……. en C# no siempre es así….
Si tenemos un número decimal en un string y queremos convertirlo a una variable en coma flotante, C# nos proporciona el método "Parse". Este método está disponible para todos los tipos básicos (int, float, double, etc…), que aquí también son objetos.
Si el string a convertir es "3.1415", "float.Parse" nos devolverá un 31415.0… vaya….
Si el string a convertir es "3,1415", "float.Parse" nos devolverá un 3.1415… esto ya es lo que queremos.
Solución: se cambia el punto por una coma y listos…. ¡¡pero no!!
Resulta que si tenemos el Framework.NET en español si que funciona, pero si lo tenemos en ingles, ya no. Según el idioma cambia la cosa.
En español los decimales se separan con una coma y en ingles con un punto, por lo que el mismo programa, dependiendo como se pasen los números, los convertirá correctamente o no.
Para asegurar el tiro, la función "Parse" permite más parámetros y que nuestro programa se comporte igual sea cual sea el idioma del entorno de ejecución.
La solución buena al problema es "System.Globalization".
Este espacio de nombres es el encargado en poner un poco de orden en lo que se trata "mayormente" los distintos formatos numericos entre otras cosas.
De esta forma, si queremos que el punto sea nuestro separador decimal de toda la vida, tendremos que utilizar la localización ingles-americana de la siguiente forma:
numero = float.Parse( "3.1415", System.Globalization.NumberStyles.Float, new System.Globalization.CultureInfo( "en-US" ) );
Esto nos permite especificar de que tipo de número se trata y que tipo de conversión tiene que aplicar.
Gracias Microsoft por hacernos la vida cada vez más facil.
26
… que veo que baja el precio del paquete de Marlboro!!!!
Titular en el 20 minutos:
"Philip Morris baja 40 céntimos el Marlboro y pone en aprietos a Altadis, que ayer subió los precios."
"… Según el Boletín Oficial del Estado de hoy, el precio de Marlboro, la marca más vendida en España y propiedad de Philip Morris, pasa de 2,75 euros por cajetilla a 2,35 euros…."
En dos palabras…. in creible…
24
¿Qué pasa cuando un pajarillo choca contra un caza en pleno despegue?…. pués un mal rollo pal cuerpo que no veas.
23
Si la última vez hablaba sobre benchmarking en móviles sobre plataforma J2ME, esta vez es en exclusiva para Symbian.
Aprovechando que ahora todos los móviles tienen cámara y gracias al sistema operativo Symbian, podemos darle una nueva utilidad a nuestro móvil: la de una cámara inalámbrica.
Y todo gracias a una curiosa aplicación llamada BluStreamer.
Con BluStreamer podremos transmitir lo que captura nuestro móvil y a través de bluetooth, las imágenes de la cámara a otro móvil, o a un pc (este necesitará otra aplicación BluViewer y conexión bluetooth).
Aunque el alcance del bluetooth es limitado (unos 10 metros), siempre nos puede servir para vigilar a un bebe que esté en otra habitación, o si somos más pervertidos, esconder el teléfono y espiar a alguien…. esto ya es a elección de cada uno.
En la foto podéis ver en acción al programa enviando las imágenes de la cámara del teléfono al pc en tiempo real.