Fórum Calculo de Multiplicação em JavaScript #594358
22/05/2018
0
Preciso fazer um calculo de porcentagem sobre um valor, porém dependendo do numero a ser calculado (se houver dizima periodica no resultado por exemplo) o resultado é arredondado e nao apresenta casas decimais, exemplo:
(estou calculando por 1.05 porque equivale a um acréscimo de 105%)
11.114,37 * 1.05 = 11.6697 (Por que sem casas decimais?)
11,11 * 1.05 = 11.55 (O correto seria 11,66)
Ou seja... O calculo está errado e as vezes nem aparece casas decimais.. Preciso dos resultados corretos com apenas 2 casas decimais. Onde estou errando? Por favor me ajudem!
(estou calculando por 1.05 porque equivale a um acréscimo de 105%)
11.114,37 * 1.05 = 11.6697 (Por que sem casas decimais?)
11,11 * 1.05 = 11.55 (O correto seria 11,66)
Ou seja... O calculo está errado e as vezes nem aparece casas decimais.. Preciso dos resultados corretos com apenas 2 casas decimais. Onde estou errando? Por favor me ajudem!
<html>
<head>
</head>
<body>
<form action="" method="">
<label for="usuario"> Valor: </label>
<input class="form-control" name="PO4R_ORCADO" id="PO4R_ORCADO" type="text" onblur="percentual();" >
<input class="form-control"name="PO4R_MAIS1" id="PO4R_MAIS1" type="text" >
</form>
</body>
</html>
<script type="text/javascript">
function percentual() {
var p105 = "1.05";
var p110 = "1.10";
var p115 = "1.15";
var vl_fr1 = document.getElementById("PO4R_ORCADO").value; //1.114,37
var a1 = parseFloat(vl_fr1)*parseFloat(p105);
//Multiplica 1.114,37 * 1.05
var a2 = parseFloat(vl_fr1)*parseFloat(p110);
var a3 = parseFloat(vl_fr1)*parseFloat(p115);
document.getElementById('PO4R_MAIS1').value = a1;
// resultado = 11.6697 na calcyladora do windows da 11.670,08
}
</script>Alexandre
Curtir tópico
+ 0
Responder
Post mais votado
22/05/2018
Boa tarde.
Neste caso como voce esta usando a virgula(,)
quando você usa o parseFloat ele apenas pega o numero 11 em vez do 11,11.
E isto não ocorre no 1.05 pois você esta usando o ponto.
Neste caso ele vai manter o 1.05
se no seu teste você usar 11.11 usando o ponto como separador você vai ver que vai dar certo.
Neste caso como voce esta usando a virgula(,)
quando você usa o parseFloat ele apenas pega o numero 11 em vez do 11,11.
E isto não ocorre no 1.05 pois você esta usando o ponto.
var p105 = "1.05"; var p110 = "1.10"; var p115 = "1.15";
Neste caso ele vai manter o 1.05
se no seu teste você usar 11.11 usando o ponto como separador você vai ver que vai dar certo.
Leandro Chiodini
Responder
Gostei + 2
Mais Posts
19/06/2018
Calebe Menezes
Olá Alexandre, você conseguiu sanar sua dúvida?
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)