Re: consejo tipo de variable para manejar dinero

Felipe DOMINGUEZ <[email protected]> Thu, 7 Oct 2010 16:43:36 +0200
Newsgroups gmane.comp.java.javaspain
Message-ID <[email protected]>
--000e0cd32778460bba049207eb99
Content-Type: text/plain; charset=windows-1252
Content-Transfer-Encoding: quoted-printable

Hola

Yo lo de redondear  al final no lo tengo claro.  Luego al final no me
cuadran las facturas.

por ejemplo : un producto cuyo precio es 5.27, con el 8% de IVA queda 5.691=
6

si se compran 4 productos del mismo valor queda as=ED:

5.6916 * 4  =3D 22.7676  rondeado a dos decimales al final  22.77

Si se redondea antes de hacer las operaciones:

5.69 * 4 =3D 22.76

Las facturas suelen estar hecha con dos decimales, con lo que aparecer=EDa
as=ED:

Producto A     =3D 5.27  + 0.42 (IVA) =3D   5.69
Producto B     -  5.27  + 0.42 (IVA) =3D   5.69
Producto C     -  5.27  + 0.42 (IVA) =3D   5.69
Producto D     -  5.27  + 0.42 (IVA) =3D   5.69

Total    : 22.77  ( redondeando al final)

pero si se suma todo sale 22.76

Creo que hay un algoritmo oficial para este tipo de operaciones, si alguien
la sabe agradecer=EDa lo dijesen. Supongo que alguien que trabaje en alg=FA=
n
banco lo ha de tener claro.

Saludos.




2010/10/7 Geckko <[email protected]>

>
>
> El rounding lo har=EDa con 4 decimales y s=F3lo al final del todo redonde=
as a
> dos.
>
> El 07/10/10 16:10, ramirex escribi=F3:
>
>
>
> ok..
>
>  justo lo que estaba pensando, la variable BigDecimal es la mejor opcion
>
> 2010/10/7 Felipe DOMINGUEZ <[email protected]>
>
>>
>>
>> Hola.
>>
>> Yo usaria BigDecimal con una precisi=F3n de 2 d=EDgitos (MathContext) y =
con
>> RoundingMode.HALF_EVEN,* *  aunque el RoundingMode lo consultar=EDa con
>> alguien de finanzas.
>>
>> en cualquier caso crear=EDa mi propia clase donde pondr=EDa el BigDecima=
l y la
>> moneda que se usa ( asumo que no son s=F3lo Euros)
>>
>>
>> Saludos
>>
>> Felipe
>>
>> --
>> Jam=F3n Ib=E9rico de Bellota ( 3 a=F1os)
>> Entregas Gratuitas Espa=F1a, 15=80 EU.
>> www.TuJamonEnCasa.com <http://www.tujamonencasa.com/>
>>
>>  <http://www.tujamonencasa.com/>
>>
>>
>>  2010/10/7 ramirex <[email protected]>
>>
>>
>>>
>>> saludos.
>>>
>>> quiero saber que tipo de variable es el mejor para manejo de dinero.
>>>
>>> gracias por los aportes
>>>
>>> --
>>>
>>
>>
>>
>
>
> --
> --------------------------------------------------------
> ----------------------- ramirex ---------------------
>             [powered by Linux]
> ---------------------------------------------------------
> weblog:
>       http://softwarelibre.org.bo/ramirex/weblog/
>
>
> GPG Key ID:  2C9D8099
>
>
>=20=20
>



--=20
Jam=F3n Ib=E9rico de Bellota ( 3 a=F1os)
Entregas Gratuitas Espa=F1a, 15=80 EU.
www.TuJamonEnCasa.com

<http://www.tujamonencasa.com>

--000e0cd32778460bba049207eb99
Content-Type: text/html; charset=windows-1252
Content-Transfer-Encoding: quoted-printable




<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/htm=
l4/strict.dtd">
<html>
<head>
</head>







<body style=3D"background-color: #fff;">
<span style=3D"display:none">&nbsp;</span>

<!--~-|**|PrettyHtmlStartT|**|-~-->
<div id=3D"ygrp-mlmsg" style=3D"position:relative;">
  <div id=3D"ygrp-msg" style=3D"z-index: 1;">
<!--~-|**|PrettyHtmlEndT|**|-~-->

    <div id=3D"ygrp-text" >
=20=20=20=20=20=20
=20=20=20=20=20=20
      <p>Hola<br><br>Yo lo de redondear=A0 al final no lo tengo claro.=A0 L=
uego al final no me cuadran las facturas. <br><br>por ejemplo : un producto=
 cuyo precio es 5.27, con el 8% de IVA queda 5.6916<br><br>si se compran 4 =
productos del mismo valor queda as=ED: <br>
<br>5.6916 * 4=A0 =3D 22.7676=A0 rondeado a dos decimales al final=A0 22.77=
<br><br>Si se redondea antes de hacer las operaciones:<br><br>5.69 * 4 =3D =
22.76=A0 <br><br>Las facturas suelen estar hecha con dos decimales, con lo =
que aparecer=EDa as=ED:<br>
<br>Producto A=A0=A0=A0=A0 =3D 5.27=A0 + 0.42 (IVA) =3D =A0 5.69<br>Product=
o B =A0=A0=A0 -=A0 5.27=A0 + 0.42 (IVA) =3D =A0 5.69<br>Producto C =A0=A0=
=A0 -=A0 5.27=A0 + 0.42 (IVA) =3D =A0 5.69<br>Producto D =A0=A0=A0 -=A0 5.2=
7=A0 + 0.42 (IVA) =3D =A0 5.69<br>=A0<br>Total=A0=A0=A0 : 22.77=A0 ( redond=
eando al final) <br>
<br>pero si se suma todo sale 22.76 <br><br>Creo que hay un algoritmo ofici=
al para este tipo de operaciones, si alguien la sabe agradecer=EDa lo dijes=
en. Supongo que alguien que trabaje en alg=FAn banco lo ha de tener claro.=
=A0 <br>
<br>Saludos.<br><br><br><br><br><div class=3D"gmail_quote">2010/10/7 Geckko=
 <span dir=3D"ltr">&lt;<a href=3D"mailto:[email protected]">geckko80@gmail=
.com</a>&gt;</span><br><blockquote class=3D"gmail_quote" style=3D"border-le=
ft: 1px solid rgb(204, 204, 204);">














<div style=3D"background-color: rgb(255, 255, 255);">
<span>=A0</span>


<div>
  <div>


    <div>
=20=20=20=20=20=20
=20=20=20=20=20=20
      <p>



El rounding lo har=EDa con 4 decimales y s=F3lo al final del todo redondeas
a dos.<br>
<br>
El 07/10/10 16:10, ramirex escribi=F3:
</p><div class=3D"im"><blockquote type=3D"cite"><span>=A0</span>

  <div>
  <p>ok..</p>
  <div><br>
  </div>
  <div>justo lo que estaba pensando, la variable BigDecimal es la mejor
opcion<br>
  <br>
  <div class=3D"gmail_quote">2010/10/7 Felipe DOMINGUEZ <span dir=3D"ltr">&=
lt;<a href=3D"mailto:[email protected]" target=3D"_blank">felipe.d=
[email protected]</a>&gt;</span><br>
  <blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid rgb(204=
, 204, 204);">
    <div style=3D"background-color: rgb(255, 255, 255);"><span>=A0</span>
    <div>
    <div>
    <div>
    <p>Hola.<br>
    <br>
Yo usaria BigDecimal con una precisi=F3n de 2 d=EDgitos (MathContext) y con
RoundingMode.HALF_EVEN,<b> </b>=A0 aunque el RoundingMode lo consultar=EDa
con alguien de finanzas. <br>
    <br>
en cualquier caso crear=EDa mi propia clase donde pondr=EDa el BigDecimal y
la moneda que se usa ( asumo que no son s=F3lo Euros) <br>
    <br>
    <br>
Saludos<br>
    <br>
Felipe<br>
    <br>
-- <br>
Jam=F3n Ib=E9rico de Bellota ( 3 a=F1os)<br>
Entregas Gratuitas Espa=F1a, 15=80 EU.<br>
    <a href=3D"http://www.tujamonencasa.com/" target=3D"_blank">www.TuJamon=
EnCasa.com</a><br>
    <br>
    <a href=3D"http://www.tujamonencasa.com/" target=3D"_blank"><img src></=
a> <br>
    <br>
    <br>
    </p>
    <div class=3D"gmail_quote">2010/10/7 ramirex <span dir=3D"ltr">&lt;<a h=
ref=3D"mailto:[email protected]" target=3D"_blank">[email protected]</a>&gt=
;</span>
    <div><br>
    <blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid rgb(2=
04, 204, 204);">
      <div style=3D"background-color: rgb(255, 255, 255);"><span>=A0</span>
      <div>
      <div>
      <div>
      <p>saludos.<br>
      <br>
quiero saber que tipo de variable es el mejor para manejo de dinero.<br>
      <br>
gracias por los aportes<br>
      <br>
-- <br>
      </p>
      </div>
      </div>
      </div>
      </div>
    </blockquote>
    </div>
    </div>
    <br>
    <br>
    </div>
    </div>
    </div>
    </div>
  </blockquote>
  </div>
  <br>
  <br clear=3D"all">
  <br>
-- <br>
--------------------------------------------------------<br>
----------------------- ramirex ---------------------<br>
=A0 =A0 =A0 =A0 =A0 =A0 [powered by Linux]<br>
---------------------------------------------------------<br>
weblog:<br>
=A0 =A0 =A0 <a href=3D"http://softwarelibre.org.bo/ramirex/weblog/" target=
=3D"_blank">http://softwarelibre.org.bo/ramirex/weblog/</a><br>
  <br>
  <br>
GPG Key ID:=A0 2C9D8099<br>
  </div>
  </div>


</blockquote>
<br>


</div>

    </div>
=20=20=20=20=20

=20=20=20=20
    <div style=3D"color: rgb(255, 255, 255);"></div>


</div>



=20=20






</div></div></blockquote></div><br><br clear=3D"all"><br>-- <br>Jam=F3n Ib=
=E9rico de Bellota ( 3 a=F1os)<br>Entregas Gratuitas Espa=F1a, 15=80 EU.<br=
><a href=3D"http://www.TuJamonEnCasa.com" target=3D"_blank">www.TuJamonEnCa=
sa.com</a><br><br><a href=3D"http://www.tujamonencasa.com" target=3D"_blank=
"><img src=3D"http://www.tujamonencasa.com/images/mail/rotuloprincipal_nail=
.jpg"></a>=A0<br>
<br>
</p>

    </div>
=20=20=20=20=20

    <!--~-|**|PrettyHtmlStart|**|-~-->
    <div style=3D"color: #fff; height: 0;">__._,_.___</div>

=20=20=20=20=20=20=20=20
=20=20
=20=20=20
    <div id=3D"ygrp-actbar" style=3D"clear: both; margin-bottom: 10px; whit=
e-space: nowrap; color: #666; padding-top: 15px;">
      <div>
        <a href=3D"mailto:[email protected]?subject=3DRe: [javaSpa=
in] consejo tipo de variable para manejar dinero" style=3D"margin-right: 0;=
 padding-right: 0;">
	  Responder a <span style=3D"font-weight: 700;">remitente</span></a> |
        <a href=3D"mailto:[email protected]?subject=3DRe: [javaSpai=
n] consejo tipo de variable para manejar dinero">
	  Responder a <span style=3D"font-weight: 700;">grupo</span></a> |
        	  <a href=3D"http://es.groups.yahoo.com/group/javaSpain/post;_ylc=
=3DX3oDMTJxZG5oYzlyBF9TAzk3NDkwNDYzBGdycElkAzE5NDEzNDUEZ3Jwc3BJZAMxNjYwMzk2=
MDU2BG1zZ0lkAzI1NjcxBHNlYwNmdHIEc2xrA3JwbHkEc3RpbWUDMTI4NjQ2MjYxOQ--?act=3D=
reply&messageNum=3D25671">Responder <span style=3D"font-weight: 700;">media=
nte la Web</span></a> |
            	<a href=3D"http://es.groups.yahoo.com/group/javaSpain/post;_yl=
c=3DX3oDMTJlZjF1NGpkBF9TAzk3NDkwNDYzBGdycElkAzE5NDEzNDUEZ3Jwc3BJZAMxNjYwMzk=
2MDU2BHNlYwNmdHIEc2xrA250cGMEc3RpbWUDMTI4NjQ2MjYxOQ--" style=3D"font-weight=
: 700;">Crear un tema nuevo</a>
      </div>

                <a href=3D"http://es.groups.yahoo.com/group/javaSpain/messa=
ge/25667;_ylc=3DX3oDMTM2OGUzZ201BF9TAzk3NDkwNDYzBGdycElkAzE5NDEzNDUEZ3Jwc3B=
JZAMxNjYwMzk2MDU2BG1zZ0lkAzI1NjcxBHNlYwNmdHIEc2xrA3Z0cGMEc3RpbWUDMTI4NjQ2Mj=
YxOQR0cGNJZAMyNTY2Nw--">Mensajes con este tema</a>
          (<span style=3D"font-weight: 700;">5</span>)
          </div>=20
<!------- Start Nav Bar ------>

<!-- |**|begin egp html banner|**| -->
<div id=3D"ygrp-vital" style=3D"background-color: #e0ecee; font-family: Ver=
dana; font-size: 10px; margin-bottom: 10px; padding: 10px;">
      <span id=3D"vithd" style=3D"font-weight: bold; color: #333; text-tran=
sform: uppercase; ">Actividad reciente:</span>

    <ul style=3D"list-style-type: none; margin: 0; padding: 0; display: inl=
ine;">
                                                    </ul>
=20=20=20=20
  <div style=3D"clear: both; padding-top: 2px; color: #1e66ae;">
    <a href=3D"http://es.groups.yahoo.com/group/javaSpain;_ylc=3DX3oDMTJlYj=
EyN3BpBF9TAzk3NDkwNDYzBGdycElkAzE5NDEzNDUEZ3Jwc3BJZAMxNjYwMzk2MDU2BHNlYwN2d=
GwEc2xrA3ZnaHAEc3RpbWUDMTI4NjQ2MjYxOQ--" style=3D"text-decoration: none;">V=
isita tu grupo</a>
  </div>
</div>

      <div id=3D"ygrp-grfd" style=3D"font-family: Verdana; font-size: 12px;=
 padding: 15px 0;">
=20=20=20=20=20=20
<!-- |**|begin egp html banner|**| -->

      Para cancelar su subscripci=F3n a este grupo, env=EDe un mensaje de c=
orreo electr=F3nico a:<BR>
[email protected]<BR>
<BR>
=20=20=20=20=20=20
<!-- |**|end egp html banner|**| -->

    </div>
=20=20
<div id=3D"ft" style=3D"font-family: Arial; font-size: 11px; margin-top: 5p=
x; padding: 0 2px 0 0; clear: both;">
  <a href=3D"http://es.groups.yahoo.com/;_ylc=3DX3oDMTJkZDdlb2c5BF9TAzk3NDk=
wNDYxBGdycElkAzE5NDEzNDUEZ3Jwc3BJZAMxNjYwMzk2MDU2BHNlYwNmdHIEc2xrA2dmcARzdG=
ltZQMxMjg2NDYyNjIw" style=3D"float: left;"><img src=3D"http://l.yimg.com/a/=
i/us/yg/logo/es.gif" height=3D"19" width=3D"141" alt=3D"Yahoo! Grupos" styl=
e=3D"border: 0;"/></a>
  <div style=3D"color: #747575; float: right;">Cambiar a: <a href=3D"mailto=
:[email protected]?subject=3DCambiar Formato de Env=C3=
=ADo: Tradicional" style=3D"text-decoration: none;">Solo Texto</a>, <a href=
=3D"mailto:[email protected]?subject=3DEnv=C3=ADo de Correo:=
 Rese=C3=B1a" class=3D"margin-rt" style=3D"text-decoration: none;">Rese\xc3=
\xb1a Diaria</a> &bull; <a href=3D"mailto:javaSpain-unsubscribe@yahoogroups=
.com?subject=3DCancelar suscripci=F3n" style=3D"text-decoration: none;">Can=
celar suscripci=F3n</a> &bull; <a href=3D"http://es.docs.yahoo.com/info/uto=
s.html" style=3D"text-decoration: none;">Condiciones de uso</a></div>
</div>

<!-- |**|end egp html banner|**| -->

  </div> <!-- ygrp-msg -->

  <!-- Sponsor -->
  <!-- |**|begin egp html banner|**| -->
  <div id=3D"ygrp-sponsor" style=3D"width:160px; float:right; clear:none; m=
argin:0 0 25px 0; background: #fff;">

<!-- Start Recommendations -->
<div id=3D"ygrp-reco">
     </div>
<!-- End Recommendations -->



  </div>   <!-- |**|end egp html banner|**| -->

  <div style=3D"clear:both; color: #FFF; font-size:1px;">.</div>
</div>

  <img src=3D"http://geo.yahoo.com/serv?s=3D97490463/grpId=3D1941345/grpspI=
d=3D1660396056/msgId=3D25671/stime=3D1286462619/nc1=3D1/nc2=3D2/nc3=3D3" wi=
dth=3D"1" height=3D"1"> <br>

<div style=3D"color: #fff; height: 0;">__,_._,___</div>
<!--~-|**|PrettyHtmlEnd|**|-~-->

</body>

<!--~-|**|PrettyHtmlStart|**|-~-->
<head>
  <style type=3D"text/css">
  <!--
  #ygrp-mkp {
  border: 1px solid #d8d8d8;
  font-family: Arial;
  margin: 10px 0;
  padding: 0 10px;
}

#ygrp-mkp hr {
  border: 1px solid #d8d8d8;
}

#ygrp-mkp #hd {
  color: #628c2a;
  font-size: 85%;
  font-weight: 700;
  line-height: 122%;
  margin: 10px 0;
}

#ygrp-mkp #ads {
  margin-bottom: 10px;
}

#ygrp-mkp .ad {
  padding: 0 0;
}

#ygrp-mkp .ad p {
  margin: 0;
}

#ygrp-mkp .ad a {
  color: #0000ff;
  text-decoration: none;
}
  #ygrp-sponsor #ygrp-lc {
  font-family: Arial;
}

#ygrp-sponsor #ygrp-lc #hd {
  margin: 10px 0px;
  font-weight: 700;
  font-size: 78%;
  line-height: 122%;
}

#ygrp-sponsor #ygrp-lc .ad {
  margin-bottom: 10px;
  padding: 0 0;
}

  a {
    color: #1e66ae;
  }

  #actions {
    font-family: Verdana;
    font-size: 11px;
    padding: 10px 0;
  }

  #activity {
    background-color: #e0ecee;
    float: left;
    font-family: Verdana;
    font-size: 10px;
    padding: 10px;
  }

  #activity span {
    font-weight: 700;
  }

  #activity span:first-child {
    text-transform: uppercase;
  }

  #activity span a {
    color: #5085b6;
    text-decoration: none;
  }

  #activity span span {
    color: #ff7900;
  }

  #activity span .underline {
    text-decoration: underline;
  }

  .attach {
    clear: both;
    display: table;
    font-family: Arial;
    font-size: 12px;
    padding: 10px 0;
    width: 400px;
  }

  .attach div a {
    text-decoration: none;
  }

  .attach img {
    border: none;
    padding-right: 5px;
  }

  .attach label {
    display: block;
    margin-bottom: 5px;
  }

  .attach label a {
    text-decoration: none;
  }
=20=20
  blockquote {
    margin: 0 0 0 4px;
  }

  .bold {
    font-family: Arial;
    font-size: 13px;
    font-weight: 700;
  }

  .bold a {
    text-decoration: none;
  }

  dd.last p a {
    font-family: Verdana;
    font-weight: 700;
  }

  dd.last p span {
    margin-right: 10px;
    font-family: Verdana;
    font-weight: 700;
  }

  dd.last p span.yshortcuts {
    margin-right: 0;
  }

  div.attach-table div div a {
    text-decoration: none;
  }

  div.attach-table {
    width: 400px;
  }

  div.file-title a, div.file-title a:active, div.file-title a:hover, div.fi=
le-title a:visited {
    text-decoration: none;
  }

  div.photo-title a, div.photo-title a:active, div.photo-title a:hover, div=
.photo-title a:visited {
    text-decoration: none;
  }

  div#ygrp-mlmsg #ygrp-msg p a span.yshortcuts {
    font-family: Verdana;
    font-size: 10px;
    font-weight: normal;
  }

  .green {
    color: #628c2a;
  }

  .MsoNormal {
    margin: 0 0 0 0;
  }

  o {
    font-size: 0;
  }

  #photos div {
    float: left;
    width: 72px;
  }

  #photos div div {
    border: 1px solid #666666;
    height: 62px;
    overflow: hidden;
    width: 62px;
  }

  #photos div label {
    color: #666666;
    font-size: 10px;
    overflow: hidden;
    text-align: center;
    white-space: nowrap;
    width: 64px;
  }

  #reco-category {
    font-size: 77%;
  }

  #reco-desc {
    font-size: 77%;
  }

  .replbq {
    margin: 4px;
  }

  #ygrp-actbar div a:first-child {
   /* border-right: 0px solid #000;*/
    margin-right: 2px;
    padding-right: 5px;
  }

  #ygrp-mlmsg {
    font-size: 13px;
    font-family: Arial, helvetica,clean, sans-serif;
    *font-size: small;
    *font: x-small;
  }

  #ygrp-mlmsg table {
    font-size: inherit;
    font: 100%;
  }

  #ygrp-mlmsg select, input, textarea {
    font: 99% Arial, Helvetica, clean, sans-serif;
  }

  #ygrp-mlmsg pre, code {
    font:115% monospace;
    *font-size:100%;
  }

  #ygrp-mlmsg * {
    line-height: 1.22em;
  }

  #ygrp-mlmsg #logo {
    padding-bottom: 10px;
  }

  #ygrp-mlmsg a {
    color: #1E66AE;
  }

  #ygrp-msg p a {
    font-family: Verdana;
  }

  #ygrp-msg p#attach-count span {
    color: #1E66AE;
    font-weight: 700;
  }

  #ygrp-reco #reco-head {
    color: #ff7900;
    font-weight: 700;
  }

  #ygrp-reco {
    margin-bottom: 20px;
    padding: 0px;
  }

  #ygrp-sponsor #ov li a {
    font-size: 130%;
    text-decoration: none;
  }

  #ygrp-sponsor #ov li {
    font-size: 77%;
    list-style-type: square;
    padding: 6px 0;
  }=20

  #ygrp-sponsor #ov ul {
    margin: 0;
    padding: 0 0 0 8px;
  }

  #ygrp-text {
    font-family: Georgia;
  }

  #ygrp-text p {
    margin: 0 0 1em 0;
  }

  #ygrp-text tt {
    font-size: 120%;
  }

  #ygrp-vital ul li:last-child {
    border-right: none !important;=20
  }=20
  -->
  </style>
</head>

<!--~-|**|PrettyHtmlEnd|**|-~-->
</html>
<!-- end group email -->


--000e0cd32778460bba049207eb99--