0

Buenos días estimados programadores, estoy tratando de implementar en un sitio web, un sencillo conversor de divisas (currency converter).

Lo que necesito realmente, es limitar el número de decimales que se muestran a solo 2, en todas las operaciones.

Por ejemplo cuando coloco un valor en “japanese yen”, la función me calcula el valor correcto a (dólar, euro, pound), lo que están sobrando son los decimales, necesito que se muestren solo dos.

El problema se empeora obviamente, al calcular cualquier operación que requiere dividir, como ejemplo al calcular “1000 japanese yen” me muestra 90909.09090909091 , me gustaria que solo mostrara en cada divisa 90909.09

Edito: la implementacion era diferente al tema "https://es.stackoverflow.com/questions/261424/quitar-decimales-innecesarios-a-un-n%c3%bamero" debido a que el valor del input no es fijo.

<!DOCTYPE html>
<html>
<head>
<script language="JavaScript">
<!--
function euroConverter(){
  document.converter.dollar.value = document.converter.euro.value * 1.470
    document.converter.pound.value = document.converter.euro.value * 0.717
      document.converter.yen.value = document.converter.euro.value * 165.192
}
function dollarConverter(){
document.converter.euro.value = document.converter.dollar.value * 0.680
document.converter.pound.value = document.converter.dollar.value * 0.488
document.converter.yen.value = document.converter.dollar.value * 112.36
}
function poundConverter(){
document.converter.dollar.value = document.converter.pound.value * 2.049
document.converter.euro.value = document.converter.pound.value * 1.394
document.converter.yen.value = document.converter.pound.value * 230.27
}
function yenConverter(){
  document.converter.dollar.value = document.converter.yen.value / 0.011
    document.converter.pound.value = document.converter.yen.value / 0.011
      document.converter.euro.value = document.converter.yen.value / 0.011
}
//-->
</script>
</head>
<body>
<!-- Start your code here -->

<form name="converter">
<table border="0">
<tr>
<td>Euro: </td><td><input type="text" name="euro" onChange="euroConverter()" /></td>
</tr>
<tr>
<td>US Dollar: </td><td><input type="text" name="dollar" onChange="dollarConverter()" /></td>
</tr>
<tr>
<td>British Pound:</td><td><input type="text" name="pound" onChange="poundConverter()" /></td>
</tr>
<tr>
<td>Japanese Yen: </td><td><input type="text" name="yen" onChange="yenConverter()" /></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="button" value="Convert!" /></td>
</tr>
</table>
</form>

<!-- End your code here -->
</body>
</html>
GiuPreDev
  • 3
  • 3
  • En primer lugar, deberías convertir cada valor recibido en tus elementos de tipo `input` en un valor numérico, usando [`parseFloat()`](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/parseFloat). En segundo lugar, deberías leer [`round()`](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/round), ya que con esto lograrías el objetivo. Saludos – Mauricio Contreras Aug 18 '20 at 07:09
  • Muchas gracias por tu respuesta, aunque no me queda claro por mi nivel actual, como implementar lo que me dices. Serias tan amable de mostrarme un ejemplo, en específico en la function yenConverter(). – GiuPreDev Aug 18 '20 at 07:14
  • 3
    ¿Responde esto a tu pregunta? [Quitar decimales innecesarios a un número](https://es.stackoverflow.com/questions/261424/quitar-decimales-innecesarios-a-un-n%c3%bamero) – Mauricio Contreras Aug 18 '20 at 07:18
  • Entiendo el procedimiento para los métodos, sin embargo al utilizar el conversor de divisas, el valor del input no es fijo como en los ejemplos. El usuario promedio introduce el monto según su necesidad. https://www.proglogic.com/code/javascript/calculator/currencyconverter.php – GiuPreDev Aug 18 '20 at 07:27

1 Answers1

1

Deberás utilizar la función toFixed(nº decimales). Está función te permite convertir el número a una cadena especificándole un número concreto de decimales:

function euroConverter(){
  document.converter.dollar.value = (document.converter.euro.value * 1.470).toFixed(2)
    document.converter.pound.value = (document.converter.euro.value * 0.717).toFixed(2)
      document.converter.yen.value = (document.converter.euro.value * 165.192).toFixed(2)
}
mourazo
  • 1,170
  • 1
  • 7
  • 18
  • Esta es la solucion a mi problema, muy agradecido por el apoyo. – GiuPreDev Aug 18 '20 at 09:59
  • Por favor leer [¿Estamos utilizando demasiado poco el cierre por duplicado?](https://es.meta.stackoverflow.com/questions/4757/estamos-utilizando-demasiado-poco-el-cierre-por-duplicado-no-usamos-demasiado). ¿En qué se diferencia tu respuesta de la enlazada como duplicada? Es exactamente el mismo problema y la solución es exactamente la misma. Debemos evitar responder preguntas que ya tienen una respuesta en el sitio. Las mismas terminan cerradas y tu publicación ya no será visible. Te invito a leer [answer], donde se anima a evitar responder preguntas duplicadas que ya tienen respuesta. Saludos – Mauricio Contreras Aug 18 '20 at 13:31