{"id":1215,"date":"2008-01-01T20:48:00","date_gmt":"2008-01-02T03:48:00","guid":{"rendered":"http:\/\/kodegeek.com\/blog\/?p=1215"},"modified":"2008-01-01T20:48:00","modified_gmt":"2008-01-02T03:48:00","slug":"convirtiendo-bolivares-a-bolivares-fuertes-desde-java","status":"publish","type":"post","link":"http:\/\/kodegeek.com\/blog\/2008\/01\/01\/convirtiendo-bolivares-a-bolivares-fuertes-desde-java\/","title":{"rendered":"Convirtiendo Bolivares a Bolivares Fuertes desde Java"},"content":{"rendered":"<p>El primer post del a\u00f1o y a\u00fan recuperandome de los abusos de Diciembre 31. Para ponermela f\u00e1cil, voy a volver sobre mis pasos del a\u00f1o anrterior y voy a hablarles un poco m\u00e1s sobre la <a href=\"http:\/\/kodegeek.com\/2007\/12\/los-400-de-cadivi-y-la-conversion.shtml\">reconversi\u00f3n de Bolivares a Bolivares Fuertes<\/a>. En este caso no voy a seguir rumiando sobre si es \u00fatil o no, sino m\u00e1s bien sobre como podemos hacer la conversi\u00f3n en este caso desde Java (Los detalles concretos sobre como implementar <a href=\"http:\/\/www.reconversionbcv.org.ve\/files\/pdf\/lineatecoct07.pdf\">la soluci\u00f3n en cualquier lenguaje estan en la p\u00e1gina que habla sobre la reconversi\u00f3n).<\/a><\/p>\n<p>Note lo siguiente:<\/p>\n<ul>\n<li>Este algoritmo s\u00f3lo 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<\/li>\n<li>No me hago responsable de ninguna manera sobre lo que este c\u00f3digo puede hacer, viene con licencia GPL (aunque si tiene errores lo limpiar\u00e9 con mucho gusto).<\/li>\n<\/ul>\n<p>El c\u00f3digo en Java, sn m\u00e1s preambulos:<\/p>\n<pre><br \/><a name=\"line1\"> 1<\/a> <span style=\"color: rgb(0, 0, 255);\"><strong>package com.kodegeek.blog.finance.venezuela;<\/strong><\/span><br \/><a name=\"line2\"> 2<\/a><br \/><a name=\"line3\"> 3<\/a> <span style=\"color: rgb(0, 0, 255);\"><strong>import java.math.BigDecimal;<\/strong><\/span><br \/><a name=\"line4\"> 4<\/a> <span style=\"color: rgb(0, 0, 255);\"><strong>import java.math.RoundingMode;<\/strong><\/span><br \/><a name=\"line5\"> 5<\/a> <span style=\"color: rgb(0, 0, 255);\"><strong>import java.text.DecimalFormat;<\/strong><\/span><br \/><a name=\"line6\"> 6<\/a> <span style=\"color: rgb(0, 0, 255);\"><strong>import java.text.NumberFormat;<\/strong><\/span><br \/><a name=\"line7\"> 7<\/a> <span style=\"color: rgb(0, 0, 255);\"><strong>import java.util.Locale;<\/strong><\/span><br \/><a name=\"line8\"> 8<\/a><br \/><a name=\"line9\"> 9<\/a> <span style=\"color: rgb(68, 68, 68);\"><i>\/**<br \/><a name=\"line10\">10<\/a>  * Class that performs the conversion between \"Bolivares\"<br \/>and \"Bolivares Fuertes\" using proper rounding<br \/><a name=\"line11\">11<\/a>  * as defined on the following official document: &lt;a<br \/>href=\"http:\/\/www.reconversionbcv.org.ve\/files\/pdf\/aspectosnov07.pdf\"<br \/>&gt;Reconversion BCV&lt;\/a&gt;<br \/><a name=\"line12\">12<\/a>  * License: GPL<br \/><a name=\"line13\">13<\/a>  * @author josevnz@kodegeek.com<br \/><a name=\"line14\">14<\/a>  *\/<\/i><\/span><br \/><a name=\"line15\">15<\/a> <strong>public<\/strong> <strong>final<\/strong> <strong>class<\/strong> <span style=\"color: rgb(32, 64, 160);\">BsF<\/span> <span style=\"color: rgb(68, 68, 255);\"><strong>{<\/strong><\/span><br \/><a name=\"line16\">16<\/a>  <strong>private<\/strong> <strong>static<\/strong> <span style=\"color: rgb(32, 64, 160);\">NumberFormat<\/span> <span style=\"color: rgb(32, 64, 160);\">nForm<\/span><span style=\"color: rgb(68, 68, 255);\">;<\/span><br \/><a name=\"line17\">17<\/a>  <strong>static<\/strong> <span style=\"color: rgb(68, 68, 255);\"><strong>{<\/strong><\/span><br \/><a name=\"line18\">18<\/a>   <span style=\"color: rgb(68, 68, 68);\">\/\/ Set the locale to Venezuela<\/span><br \/><a name=\"line19\">19<\/a>   <span style=\"color: rgb(32, 64, 160);\">Locale<\/span>.<span style=\"color: rgb(32, 64, 160);\">setDefault<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>(<\/strong><\/span><strong>new<\/strong> <span style=\"color: rgb(32, 64, 160);\">Locale<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>(<\/strong><\/span><span style=\"color: rgb(0, 128, 0);\">\"es\"<\/span>, <span style=\"color: rgb(0, 128, 0);\">\"VE\"<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>)<\/strong><\/span><span style=\"color: rgb(68, 68, 255);\"><strong>)<\/strong><\/span><span style=\"color: rgb(68, 68, 255);\">;<\/span><br \/><a name=\"line20\">20<\/a>   <span style=\"color: rgb(32, 64, 160);\">nForm<\/span> <span style=\"color: rgb(68, 68, 255);\">=<\/span> <strong>new<\/strong> <span style=\"color: rgb(32, 64, 160);\">DecimalFormat<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>(<\/strong><\/span><span style=\"color: rgb(0, 128, 0);\">\"BsF #.00\"<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>)<\/strong><\/span><span style=\"color: rgb(68, 68, 255);\">;<\/span><br \/><a name=\"line21\">21<\/a>  <span style=\"color: rgb(68, 68, 255);\"><strong>}<\/strong><\/span><br \/><a name=\"line22\">22<\/a><br \/><a name=\"line23\">23<\/a>  <strong>private<\/strong> <strong>static<\/strong> <strong>final<\/strong> <span style=\"color: rgb(32, 64, 160);\">BigDecimal<\/span> <span style=\"color: rgb(32, 64, 160);\">FACTOR<\/span> <span style=\"color: rgb(68, 68, 255);\">=<\/span> <strong><br \/>new<\/strong> <span style=\"color: rgb(32, 64, 160);\">BigDecimal<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>(<\/strong><\/span><span style=\"color: rgb(32, 64, 160);\">Math<\/span>.<span style=\"color: rgb(32, 64, 160);\">pow<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>(<\/strong><\/span><span style=\"color: rgb(255, 0, 0);\">10<\/span>, <span style=\"color: rgb(255, 0, 0);\">3<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>)<\/strong><\/span><span style=\"color: rgb(68, 68, 255);\"><strong>)<\/strong><\/span><span style=\"color: rgb(68, 68, 255);\">;<\/span><br \/><a name=\"line24\">24<\/a>  <strong>private<\/strong> <strong>static<\/strong> <strong>final<\/strong> <strong>double<\/strong> <span style=\"color: rgb(32, 64, 160);\">PLACES<\/span> <span style=\"color: rgb(68, 68, 255);\">=<\/span> <span style=\"color: rgb(68, 68, 255);\"><strong><br \/>(<\/strong><\/span><strong>double<\/strong><span style=\"color: rgb(68, 68, 255);\"><strong>)<\/strong><\/span> <span style=\"color: rgb(32, 64, 160);\">Math<\/span>.<span style=\"color: rgb(32, 64, 160);\">pow<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>(<\/strong><\/span><span style=\"color: rgb(255, 0, 0);\">10<\/span>, <span style=\"color: rgb(255, 0, 0);\">2<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>)<\/strong><\/span><span style=\"color: rgb(68, 68, 255);\">;<\/span><br \/><a name=\"line25\">25<\/a><br \/><a name=\"line26\">26<\/a>  <strong>public<\/strong> <strong>static<\/strong> <strong>double<\/strong> <span style=\"color: rgb(32, 64, 160);\">bsTobsF<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>(<\/strong><\/span><strong>double<\/strong> <span style=\"color: rgb(32, 64, 160);\">value<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>)<\/strong><\/span> <span style=\"color: rgb(68, 68, 255);\"><strong>{<\/strong><\/span><br \/><a name=\"line27\">27<\/a>   <span style=\"color: rgb(32, 64, 160);\">BigDecimal<\/span> <span style=\"color: rgb(32, 64, 160);\">valScale<\/span> <span style=\"color: rgb(68, 68, 255);\">=<\/span> <strong>new<\/strong> <span style=\"color: rgb(32, 64, 160);\">BigDecimal<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>(<\/strong><\/span><span style=\"color: rgb(32, 64, 160);\">value<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>)<\/strong><\/span><span style=\"color: rgb(68, 68, 255);\">;<\/span><br \/><a name=\"line28\">28<\/a>   <strong>return<\/strong> <span style=\"color: rgb(32, 64, 160);\">valScale<\/span>.<span style=\"color: rgb(32, 64, 160);\">divide<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>(<\/strong><\/span><span style=\"color: rgb(32, 64, 160);\">FACTOR<\/span>, <span style=\"color: rgb(255, 0, 0);\">2<\/span>, <span style=\"color: rgb(32, 64, 160);\"><br \/>RoundingMode<\/span>.<span style=\"color: rgb(32, 64, 160);\">HALF_UP<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>)<\/strong><\/span>.<span style=\"color: rgb(32, 64, 160);\">doubleValue<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>(<\/strong><\/span><span style=\"color: rgb(68, 68, 255);\"><strong>)<\/strong><\/span><span style=\"color: rgb(68, 68, 255);\">;<\/span><br \/><a name=\"line29\">29<\/a>  <span style=\"color: rgb(68, 68, 255);\"><strong>}<\/strong><\/span><br \/><a name=\"line30\">30<\/a><br \/><a name=\"line31\">31<\/a>  <strong>public<\/strong> <strong>static<\/strong> <strong>double<\/strong> <span style=\"color: rgb(32, 64, 160);\">bsFtoBs<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>(<\/strong><\/span><strong>double<\/strong> <span style=\"color: rgb(32, 64, 160);\">value<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>)<\/strong><\/span> <span style=\"color: rgb(68, 68, 255);\"><strong>{<\/strong><\/span><br \/><a name=\"line32\">32<\/a>   <span style=\"color: rgb(32, 64, 160);\">BigDecimal<\/span> <span style=\"color: rgb(32, 64, 160);\">valScale<\/span> <span style=\"color: rgb(68, 68, 255);\">=<\/span> <strong>new<\/strong> <span style=\"color: rgb(32, 64, 160);\">BigDecimal<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>(<\/strong><\/span><span style=\"color: rgb(32, 64, 160);\">value<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>)<\/strong><\/span><span style=\"color: rgb(68, 68, 255);\">;<\/span><br \/><a name=\"line33\">33<\/a>   <strong>return<\/strong> <span style=\"color: rgb(32, 64, 160);\">valScale<\/span>.<span style=\"color: rgb(32, 64, 160);\">multiply<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>(<\/strong><\/span><span style=\"color: rgb(32, 64, 160);\">FACTOR<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>)<\/strong><\/span>.<span style=\"color: rgb(32, 64, 160);\">doubleValue<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>(<\/strong><\/span><span style=\"color: rgb(68, 68, 255);\"><strong>)<\/strong><\/span><span style=\"color: rgb(68, 68, 255);\">;<\/span><br \/><a name=\"line34\">34<\/a>  <span style=\"color: rgb(68, 68, 255);\"><strong>}<\/strong><\/span><br \/><a name=\"line35\">35<\/a><br \/><a name=\"line36\">36<\/a>  <strong>public<\/strong> <strong>static<\/strong> <strong>void<\/strong> <span style=\"color: rgb(32, 64, 160);\">main<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>(<\/strong><\/span><span style=\"color: rgb(32, 64, 160);\">String<\/span> <span style=\"color: rgb(68, 68, 255);\"><strong>[<\/strong><\/span><span style=\"color: rgb(68, 68, 255);\"><strong>]<\/strong><\/span> <span style=\"color: rgb(32, 64, 160);\">args<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>)<\/strong><\/span> <span style=\"color: rgb(68, 68, 255);\"><strong>{<\/strong><\/span><br \/><a name=\"line37\">37<\/a>   <strong>double<\/strong> <span style=\"color: rgb(32, 64, 160);\">value<\/span> <span style=\"color: rgb(68, 68, 255);\">=<\/span> <span style=\"color: rgb(32, 64, 160);\">Double<\/span>.<span style=\"color: rgb(32, 64, 160);\">parseDouble<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>(<\/strong><\/span><span style=\"color: rgb(32, 64, 160);\">args<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>[<\/strong><\/span><span style=\"color: rgb(255, 0, 0);\">0<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>]<\/strong><\/span><span style=\"color: rgb(68, 68, 255);\"><strong>)<\/strong><\/span><span style=\"color: rgb(68, 68, 255);\">;<\/span><br \/><a name=\"line38\">38<\/a>   <span style=\"color: rgb(32, 64, 160);\">value<\/span> <span style=\"color: rgb(68, 68, 255);\">=<\/span> <span style=\"color: rgb(32, 64, 160);\">bsTobsF<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>(<\/strong><\/span><span style=\"color: rgb(32, 64, 160);\">value<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>)<\/strong><\/span><span style=\"color: rgb(68, 68, 255);\">;<\/span><br \/><a name=\"line39\">39<\/a>   <span style=\"color: rgb(32, 64, 160);\">System<\/span>.<span style=\"color: rgb(32, 64, 160);\">out<\/span>.<span style=\"color: rgb(32, 64, 160);\">println<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>(<\/strong><\/span><span style=\"color: rgb(32, 64, 160);\">nForm<\/span>.<span style=\"color: rgb(32, 64, 160);\">format<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>(<\/strong><\/span><span style=\"color: rgb(32, 64, 160);\">value<\/span><span style=\"color: rgb(68, 68, 255);\"><strong>)<\/strong><\/span><span style=\"color: rgb(68, 68, 255);\"><strong>)<\/strong><\/span><span style=\"color: rgb(68, 68, 255);\">;<\/span><br \/><a name=\"line40\">40<\/a>  <span style=\"color: rgb(68, 68, 255);\"><strong>}<\/strong><\/span><br \/><a name=\"line41\">41<\/a> <span style=\"color: rgb(68, 68, 255);\"><strong>}<\/strong><\/span>                                                                                                           <br \/><br \/><\/pre>\n<p>Menos de 50 lineas de c\u00f3digo, incluyendo comentarios y cosas in\u00fatiles, todo en menos de 10 minutos (creo que no tiene bugs pero tengo el derecho de equivocarme).<\/p>\n<p>Por cierto, \u00bfha jugado <a href=\"http:\/\/www.reconversionbcv.org.ve\/www\/conversor.htm\">con el programa oficial de reconversi\u00f3n en l\u00ednea<\/a>? Es <span style=\"font-style: italic;\">horroroso<\/span>, ya que:<\/p>\n<ul>\n<li>No te deja meter la cantidad directamente, en vez de eso tienes que pulsar TODOS los n\u00fameros en la calculadora<\/li>\n<li>Te deja especificar Bolivares Fuertes (O bolivares) tanto en la fuente como el destino de la conversi\u00f3n (estupido). Un bot\u00f3n e selecci\u00f3n simple soluciona el problema.<\/li>\n<li>Est\u00e1 escrita en Flash (OK, no es un bug sino mal gusto \ud83d\ude42 )<\/li>\n<\/ul>\n<p>Si me animan quizas ponga una aplicaci\u00f3n aqui en el blog, haganmelo saber si est\u00e1n interesados.<\/p>\n<p>Blogalaxia:<a href=\"http:\/\/www.blogalaxia.com\/tags\/reconversion\" rel=\"tag\">reconversion<\/a>, <a href=\"http:\/\/www.blogalaxia.com\/tags\/bolivares\" rel=\"tag\">bolivares<\/a>, <a href=\"http:\/\/www.blogalaxia.com\/tags\/bolivar+fuerte\" rel=\"tag\">bolivar fuerte<\/a>, <a href=\"http:\/\/www.blogalaxia.com\/tags\/java\" rel=\"tag\">java<\/a><br \/>Technorati:<a href=\"http:\/\/technorati.com\/tag\/reconversion\" rel=\"tag\">reconversion<\/a>, <a href=\"http:\/\/technorati.com\/tag\/bolivares\" rel=\"tag\">bolivares<\/a>, <a href=\"http:\/\/technorati.com\/tag\/bolivar+fuerte\" rel=\"tag\">bolivar fuerte<\/a>, <a href=\"http:\/\/technorati.com\/tag\/java\" rel=\"tag\">java<\/a><br \/>To2blogs:<a href=\"http:\/\/www.to2blogs.com\/tag\/reconversion\" rel=\"tag\">reconversion<\/a>, <a href=\"http:\/\/www.to2blogs.com\/tag\/bolivares\" rel=\"tag\">bolivares<\/a>, <a href=\"http:\/\/www.to2blogs.com\/tag\/bolivar+fuerte\" rel=\"tag\">bolivar fuerte<\/a>, <a href=\"http:\/\/www.to2blogs.com\/tag\/java\" rel=\"tag\">java<\/a><br \/>Del.icio.us:<a href=\"http:\/\/del.icio.us\/tag\/reconversion\" rel=\"tag\">reconversion<\/a>, <a href=\"http:\/\/del.icio.us\/tag\/bolivares\" rel=\"tag\">bolivares<\/a>, <a href=\"http:\/\/del.icio.us\/tag\/bolivar+fuerte\" rel=\"tag\">bolivar fuerte<\/a>, <a href=\"http:\/\/del.icio.us\/tag\/java\" rel=\"tag\">java<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>El primer post del a\u00f1o y a\u00fan recuperandome de los abusos de Diciembre 31. Para ponermela f\u00e1cil, voy a volver sobre mis pasos del a\u00f1o anrterior y voy a hablarles un poco m\u00e1s sobre la reconversi\u00f3n de Bolivares a Bolivares Fuertes. En este caso no voy a seguir rumiando sobre si es \u00fatil o no, <a class=\"read-more\" href=\"http:\/\/kodegeek.com\/blog\/2008\/01\/01\/convirtiendo-bolivares-a-bolivares-fuertes-desde-java\/\">[&hellip;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[9],"tags":[79,282,757,281],"_links":{"self":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/posts\/1215"}],"collection":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/comments?post=1215"}],"version-history":[{"count":0,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/posts\/1215\/revisions"}],"wp:attachment":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/media?parent=1215"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/categories?post=1215"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/tags?post=1215"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}