<body>

Sitios web relacionados: PingBlog | Fotos

jueves, enero 03, 2008

Conversion de Bs. a Bs.F. en Java (II)

BsF
No resisti la tentación de envenenar el programita (n pasaban nada bueno en televisión :) )

Ya mis vacaciones llegaron a su fin; Voy a emplear el último dia en algo que no tenga que ver con la computadora (es increible como pasan de rápido 2 semanas).

En fin, de vuelta a la realidad :)

Me puse a jugar un poco con el pedacito de código que convierte de Bs. a Bs.F. desde Java y lo converti en un programa con interfaz gráfica el cual te puedes correr desde tu navegador, o si lo prefieres desde la linea de comandos así:

javaws http://kodegeek.com/java/Bsf.jnlp

Me di cuenta de un error cuando procesas números en formato distinto al idioma Ingles el cual solucione usando DecimalFormat el cual si soporta Locale. También removi un cambio global de Locale el cual no era necesario.

Como siempre el código está disponible en Source Forge, se aceptan sugerencias para mejorarlo.

Actualización: Llegamos al apartamento a las 2:00 AM, de vuelta a Norwalk :)

Blogalaxia:, , ,
Technorati:, , ,
To2blogs:, , ,
Del.icio.us:, , ,

Etiquetas: , , ,

martes, enero 01, 2008

Convirtiendo Bolivares a Bolivares Fuertes desde Java

El primer post del año y aún recuperandome de los abusos de Diciembre 31. Para ponermela fácil, voy a volver sobre mis pasos del año anrterior y voy a hablarles un poco más sobre la reconversión de Bolivares a Bolivares Fuertes. En este caso no voy a seguir rumiando sobre si es útil o no, sino más bien sobre como podemos hacer la conversión en este caso desde Java (Los detalles concretos sobre como implementar la solución en cualquier lenguaje estan en la página que habla sobre la reconversión).

Note lo siguiente:
  • Este algoritmo sólo sirve para hacer pagos ya que redondea a dos decimales. Cuando se convierte datos historicos se deben usar 3 para poder convertir de vuelta cantidades
  • No me hago responsable de ninguna manera sobre lo que este código puede hacer, viene con licencia GPL (aunque si tiene errores lo limpiaré con mucho gusto).

El código en Java, sn más preambulos:


1 package com.kodegeek.blog.finance.venezuela;
2
3 import java.math.BigDecimal;
4 import java.math.RoundingMode;
5 import java.text.DecimalFormat;
6 import java.text.NumberFormat;
7 import java.util.Locale;
8
9 /**
10 * Class that performs the conversion between "Bolivares"
and "Bolivares Fuertes" using proper rounding
11 * as defined on the following official document: <a
href="http://www.reconversionbcv.org.ve/files/pdf/aspectosnov07.pdf"
>Reconversion BCV</a>
12 * License: GPL
13 * @author josevnz@kodegeek.com
14 */

15 public final class BsF {
16 private static NumberFormat nForm;
17 static {
18 // Set the locale to Venezuela
19 Locale.setDefault(new Locale("es", "VE"));
20 nForm = new DecimalFormat("BsF #.00");
21 }
22
23 private static final BigDecimal FACTOR =
new
BigDecimal(Math.pow(10, 3));
24 private static final double PLACES =
(
double) Math.pow(10, 2);
25
26 public static double bsTobsF(double value) {
27 BigDecimal valScale = new BigDecimal(value);
28 return valScale.divide(FACTOR, 2,
RoundingMode
.HALF_UP).doubleValue();
29 }
30
31 public static double bsFtoBs(double value) {
32 BigDecimal valScale = new BigDecimal(value);
33 return valScale.multiply(FACTOR).doubleValue();
34 }
35
36 public static void main(String [] args) {
37 double value = Double.parseDouble(args[0]);
38 value = bsTobsF(value);
39 System.out.println(nForm.format(value));
40 }
41 }


Menos de 50 lineas de código, incluyendo comentarios y cosas inútiles, todo en menos de 10 minutos (creo que no tiene bugs pero tengo el derecho de equivocarme).

Por cierto, ¿ha jugado con el programa oficial de reconversión en línea? Es horroroso, ya que:
  • No te deja meter la cantidad directamente, en vez de eso tienes que pulsar TODOS los números en la calculadora
  • Te deja especificar Bolivares Fuertes (O bolivares) tanto en la fuente como el destino de la conversión (estupido). Un botón e selección simple soluciona el problema.
  • Está escrita en Flash (OK, no es un bug sino mal gusto :) )
Si me animan quizas ponga una aplicación aqui en el blog, haganmelo saber si están interesados.

Blogalaxia:, , ,
Technorati:, , ,
To2blogs:, , ,
Del.icio.us:, , ,

Etiquetas: , , ,