miércoles, 3 de noviembre de 2010

Redondear un número flotante

No existe una función específica para poder redondear un número, pero con una combinación de las funciones básicas de math.h se puede lograr el mismo efecto.

Si se desea redondear el valor 1.768 a dos decimales se puede hacer lo siguiente:
floor(1.768*100+0.5)/100

Nota. se coloca
10 : 1 decimal
100 : 2 decimales
1000: 3 decimales...

Este es el efecto que se logra (paso a paso):
floor(1.768*100+0.5)/100
= floor(176.8 +0.5)/100
= floor(177.3 )/100
= 177 /100
= 1.77

Se pueden crear las siguientes macro (colócalas al inicio de tu código fuente):

#define ROUND(num) floor(num*100+0.5)/100

#define ROUND_V2(num,dec) floor(num*(pow(10,dec))+0.5)/pow(10,dec)


Pueden ser usadas de la siguiente forma:
float num = ROUND(1.7684); // produce 1.77
float num2 = ROUND_V2(1.7684,2); // produce 1.77
float num3 = ROUND_V2(1.7684,1); // produce 1.8
float num4 = ROUND_V2(1.7684,3); // produce 1.768

jueves, 23 de abril de 2009

Obtener icono de un archivo

import java.io.*;
import javax.swing.*;
import javax.imageio.*;

public class IconExtract {
public static void main(String[] args) throws Exception {

File file = new File("C:/windows/regedit.exe");

//Obtener metadata y crear un icono
sun.awt.shell.ShellFolder sf = sun.awt.shell.ShellFolder.getShellFolder(file);
Icon icon = new ImageIcon(sf.getIcon(true));
System.out.println("type = " + sf.getFolderType());

//mostrar el icono
JLabel ficon = new JLabel(s, icon, SwingConstants.LEFT);

/*Modo 2 (miniatura)
//Obtener metadata y crear un icono
Icon icon = javax.swing.filechooser.FileSystemView.getFileSystemView().getSystemIcon(file);

//mostrar el icono
JLabel ficon = new JLabel(s, icon, SwingConstants.LEFT);

*/

JFrame frame = new JFrame();
frame.getContentPane().add(ficon);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}

}

Leer URL

import java.net.*;
import java.io.*;

public class LeerURL {

public static void main(String[] args) {

try {
// Indicamos la URL donde nos conectamos
URL url = new URL("http://www.google.com");

// Buffer con los datos recibidos
BufferedReader in = null;

try {
// Volcamos lo recibido al buffer
in = new BufferedReader(new InputStreamReader(url.openStream()));
} catch(Throwable t){}

// Transformamos el contenido del buffer a texto
String inputLine;
StringBuilder inputText= new StringBuilder();;

// Mientras haya cosas en el buffer las volcamos a las cadenas de texto
while ((inputLine = in.readLine()) != null){
inputText.append(inputLine);
inputText.append("\n");
}

// Mostramos el contenido y cerramos la entrada
System.out.println("El contenido de la URL es: " + inputText);
in.close();

} catch (MalformedURLException me) {
System.out.println("URL erronea");
} catch (IOException ioe) {
System.out.println("Error IO");
}

}

}