Ir para conteúdo
TheOicle

Como pegar valor depois da virgula de um float

Recommended Posts

Eu quero pegar as 3 unidades depois da virgula.

 

Ex:  

float a = 897.098;



string b = 098;



cout<< b;

 

 

Acredito que voces entenderam com o exemplo acima. Nao pode haver arrays , tem que ser o mais simples possivel.

 

Agora, vou mostrar a minha tentativa:

 

#include<iostream>

using namespace std;

int main()
{
    float premio;
    cout<<"Digite o segundo numero: ";
    cin>>premio;
    cin.ignore();

    float a = float(premio) % int(premio); //Da um erro por causa do mod
    
    ou

    float a = float(premio) - int(premio); //
    
    cout<<a;

    return 1;
}

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O operador de modulo(%) só realizada operações com inteiros.

 

Na sua situação você pode utilizar a função fmod(http://www.cplusplus.com/reference/cmath/fmod/) disponível no cabeçalho cmath.

float a = fmod(premio, 1);

Ou utilizar sua segunda alternativa mesmo.

float a = premio - int(premio);

 

Se quiser recuperar a fração como um inteiro basta multiplicá-la por 10 elevado ao numero de casas decimais relevantes.

image.png.77b94246c86b736e96981bbbe6b6426f.png

 

int f = a * pow(10, 3); 
//ou 
int f = a * 1000;

O detalhe é que você deve especificar a quantidade de casas relevantes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado!

 

Minha intencao era aquele float (do exemplo..) com um limite de 3 unidades depois da virgula. Eu ja tinha tentado antes calcular usando o *1000 mais só dava duas unidades depois da virgula mesmo. Tipo o seu exemplo. 

 

Usei o fmod e consegui. Sinceramente, eu não conhecia o fmod. 

 

Mas eu ainda não sei, veja minha duvida no proprio codigo.

 

#include<iostream>
#include<cmath>
#include<iomanip>

using namespace std;

int main()
{
    float numero = 54.098;

    float resto_do_numero = fmod(numero,int(numero));
    
    int pega_resto = resto_do_numero; // Como eu transformo essa varivel em inteiro???

    //cout<<setprecision(3)<<fixed;
    //cout<<resto_do_numero;

    return 1;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só vai dar 2 duas unidades pois o zero a esquerda é insignificante e não é representado.

 

Mas se você quiser imprimir zeros a esquerda pode fazer o seguinte.

int pega_resto = resto_do_numero * 1000;

cout << setfill('0') << setw(3) << pega_resto;

 

setfill('0') define o caractere a ser usado para completar o tamanho informado por setw(3) que define o tamanho como sendo 3.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Saiu como esperado...Valeu pela paciencia. Só nao sei como marcar o topico como concluido. 

/*
    Variaveis e entrada

A LBV fez um sorteio cujos bilhetes continham números de 6 dígitos.
O sorteio foi baseado nos dois primeiros prêmios da loteria federal,
sendo o número sorteado formado pelos três últimos dígitos do primeiro
e do segundo prêmio. Por exemplo, se o primeiro prêmio fosse 34.582 e o
segundo 54.098, o número da LBV seria 582.098. Escreva um programa que
lê os dois prêmios e retorna o número sorteado. 
*/

#include<iostream>
#include<cmath>
#include<iomanip>

using namespace std;

int main()
{
    float numero1;
    cout<<"Digite: ";
    cin>>numero1;		//34.582
    cin.ignore();

    float numero2;
    cout<<"Digite: ";
    cin>>numero2;		//54.098
    cin.ignore();

    //pega a parte fracionaria do numeros
    float pega_resto_do_numero1 = fmod(numero1,int(numero1));
    float pega_resto_do_numero2 = fmod(numero2,int(numero2));

    //transforma a parte fracionaria em
    //um inteiro para melhor visualizacao.
    int a = pega_resto_do_numero1 * 1000;
    int b = pega_resto_do_numero2 * 1000;

    cout<<"Resultado final: "<<a<<"."<<setfill('0')<<setw(3)<<b; //Resultado final: 582.097

    return 1;
}

 

  • Gostei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Loconarrativo
      Bom, no meu form, eu peço para o cliente digitar um valor (esse valor em reais), mas para continuar eu preciso me certificar que a variável que contem o valor, tenha 16 dígitos ao total, então se a pessoa digita uma 1000.00, eu preciso completar com 9 zeros a esquerda (fica assim 0000000001000.00), para eu saber quantos dígitos tem na variável, eu faço
      $i = strlen( $_POST['valor']);   ai eu faço
      $u = 8 - $i ; eu tenho o numero de zeros que preciso colocar a esquerda, mas como eu transformo isso em vários zeros? 
    • Por ammorei
      Oi Pessoal, blz?!?!?
       
      Estou precisando da ajuda de vocês novamente.
      Alguém poderia analisar meu código e verificar o que estou fazendo errado. O código abaixo só me retorna 0, sendo que se eu der o mesmo comando no MySQL ele me mostra os valores.
       
      <?php $con=mysqli_connect("localhost","root","root1","retencao_alunos"); mysqli_set_charset($con, 'utf8'); // Check connection if (mysqli_connect_errno()) { echo "Falha na Conexão com o BD: " . mysqli_connect_error(); } echo "<h2>WHILE</h2>"; $m = 1; while($m<=12) { $sel = "SELECT count(*) AS quant FROM retencao WHERE ano=2018 AND month(data)='.$m.'"; $sql = mysqli_query($con,$sel); $row = mysqli_fetch_array($sql); $tot = $row['quant']; echo $tot; echo ", <br>"; $m++; } mysqli_close($con); ?> Lembrando que sou iniciante, então fiquem a vontade para sugerir melhorias.
      Fico no aguardo... Obrigado!!
    • Por Pedro Tavares
      Olá.
       Me formei recentemente em Design Gráfico e tive matérias de desenvolvimento web e desenvolvi meu próprio site portfólio. Me sinto minimamente preparado para desenvolver um site. Fui solicitado para fazer um hotsite, front e Backend e não faço a menor ideia de qual valor cobrar. Podem me ajudar dizendo qual valor vocês cobram para um hotsite, one Page?
    • Por Eliabe Andrade
      Boa noite pessoal, estou iniciando em programação web, e já estou desenvolvendo um projeto pequeno para a empresa que trabalho e a minha dificuldade é a seguinte, possuo um campo SELECT/OPTION, onde o usuário seleciona o produto e  caso ele queira adicionar mais produtos é só clicar no botão adicionar, até tudo ok, a minha dificuldade esta em fazer com que os valores dos produtos se somem em um INPUT, até consegui exibir o valor mas quando adiciono mais um campo e seleciono o produto, ao invés dele somar ele substitui o valor do produto anterior, segue abaixo meu teste que até agora por zilhões de tentativas não obtive exito e agora peço ajuda aos senhores que tem mais experiência.
       
      <?php include_once("../conexao/conexao.php"); $conexao = conexao::getInstance(); $sql = "SELECT * FROM produtos"; $stm = $conexao->prepare($sql); $stm->execute(); $produtos = $stm->fetchAll(PDO::FETCH_OBJ); ?> <!doctype html> <html lang="pt-br"><head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Cadastro de Cliente</title> <link rel="stylesheet" type="text/css" href="../administrativo/css/bootstrap.min.css" rel="stylesheet" media="screen"> <link href="../administrativo/css/bootstrap-datetimepicker.min.css" rel="stylesheet" media="screen"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="../administrativo/js/jquery.mask.js"></script> <style type="text/css"> body { margin: 0; padding: 0;} .box { margin: 0 auto; width: 800px;} #fieldsHidden{ display:none;} #alvo{padding:10px 5px;} .margens{ margin-left: 2px; margin-right: 2px; } #p{ margin-left: 2px; margin-right: 2px; } </style> <script type="text/javascript"> $(document).ready(function(){ $('body').on('change','.prod_tipo' , function() { var id = $(this).data('id'); $('#' + id).val($(this).find(':selected').data('valor')); }); $('body').on('change','.prod_tipo' , function() { function convertMoeda(n, c, d, t) { c = isNaN(c = Math.abs(c)) ? 2 : c, d = d == undefined ? "," : d, t = t == undefined ? "." : t, s = n < 0 ? "-" : "", i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0; return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : ""); } var id = $(this).data('id'); var soma = 0; $(this).find(':selected').each(function(id, element){ soma = soma + parseFloat($(element).data('somar_valor' + id)) }) $('#valor_total').val(convertMoeda(soma)); }); var contar = 1; $("#add").on('click', function(){ var select = '<div class="form-group"><div class="form-inline row margens">'; select += '<div class="form-group col">'; select += '<label for="vnd_tipo_vendedor" class="label label-small" style="color: black;">TIPO PRODUTO:</label><br><select data-id="' + contar + '" data-conta_campos="' + contar + '" class="form-control custom-select prod_tipo" name="prod_tipo[]" id="prod_tipo" data-error="Por favor, selecione um produto." required><option value="" >PRODUTO: </option><?php foreach($produtos as $produto): ?><option value="<?= $produto->produto ?>" name="id" data-valor="<?= number_format($produto->valor, 2, ',','.') ?>" data-somar_valor0="<?= $produto->valor ?>" ><?= $produto->produto ?></option><?php endforeach;?></select>'; select += '<div class="help-block with-errors"></div></div>'; select += '&nbsp;<div class="form-group col">'; select +='<label for="vnd_tipo_vendedor" class="label label-small" style="color: black;">VALOR:</label><br><div class="input-group"><span class="input-group-addon">R$</span><input id="' + contar + '" class="form-control dinheiro" id="prod_valor" name="prod_valor[]" type="text" value="" size="6" required></div>'; select +='<div class="help-block with-errors"></div></div>'; select +='</div>&nbsp;<button type="button" class="btn btn-danger btn-sm del" id="add"><span class="glyphicon glyphicon-minus"></span>&nbsp;Remover</button></div>'; contar++; $("#produtos").append(select); return false; }); $(document).on('click', '.del', function(){ $(this).parent().remove(); }); }); </script> <script type="text/javascript"> $(document).ready(function(){ //$('#cod_cli').mask('999999999'); //$('#rg').mask('99.999.999', {reverse: true}); //$('.cpf').mask('000.000.000-00', {reverse: true}); //$('#cep').mask('99.999-999'); //$('#telefone').mask('(99) 9999-9999'); //$('#celular').mask('(99) 99999-9999'); //$('#exame').mask('000.000.000.000.000,00', { // reverse: true //}); //$('#armacao').mask('000.000.000.000.000,00', { // reverse: true //}); //$('#prod_valor').mask('000.000.000.000.000,00', { // reverse: true //}); $('.dinheiro').mask('000.000.000.000.000,00', { reverse : true }); }); </script> </head> <body> <div class='container-fluid'> <button type="button" class="btn btn-primary btn-sm" id="add"><span class="glyphicon glyphicon-plus"></span>&nbsp;Adicionar Produto</button><br><br> <form class="form form-inline" action="" method="post"> <fieldset> <div class="form-group"> <div class="form-inline row margens"> <div class="form-group col"> <label for="prod_tipo" class="label label-small" style="color: black;">TIPO DE PRODUTO:</label><br> <select data-id="0" data-conta_campos="0" class="form-control custom-select prod_tipo" name="prod_tipo[]" id="prod_tipo" data-error="Por favor, selecione um produto." required > <option value="" >PRODUTO: </option> <?php foreach($produtos as $produto): ?> <option value="<?= $produto->produto ?>" name="id" data-valor="<?= number_format($produto->valor, 2, ',','.') ?>" data-somar_valor0="<?= $produto->valor ?>" ><?= $produto->produto ?></option> <?php endforeach;?> </select> <div class="help-block with-errors"></div> </div> <div class="form-group col"> <label for="prod_valor" class="label label-small" style="color: black;">VALOR:</label><br> <div class="input-group"> <span class="input-group-addon">R$</span> <input class="form-control dinheiro" id="0" name="prod_valor[]" type="text" value="" size="6" required> </div> <div class="help-block with-errors"></div> </div> </div> </div><br> <div class="form-group"> <div class="form-inline row margens" id="produtos"> <!-- INPUT'S DINAMICOS --> </div> </div><br> <div class="form-group"> <div class="form-inline row margens"> <div class="form-group col"> <label for="prod_valor" class="label label-small" style="color: black;">VALOR TOTAL:</label><br> <div class="input-group"> <span class="input-group-addon">R$</span> <input type="text" name="valor_total" id="valor_total" class='form-control dinheiro'/> </div> <div class="help-block with-errors"></div> </div> </div> </div> </fieldset> </form> </div> </body> <script src="../administrativo/js/bootstrap.min.js"></script> </html>  
    • Por Nova Ourora
      Olá estou criando um sistema aqui na loja, preciso que quando digite o código de barras ele pegue no banco de dados descrição do produto com seu preço, e apareça em uma lista.
       
      (Quer dizer que  só  colocar o código do produto e que o preço do produto e o nome do produto devem aparecer automaticamente e  ir adicionando automaticamente o total gasto.)
       
       
      <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="mobile-web-app-capable" content="yes"> <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --> <title>Caixa Loja</title> <!-- Bootstrap --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous"> <link rel="stylesheet" href="assets/js/chosen/docsupport/prism.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/chosen/1.8.2/chosen.css"> <link href="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css"> <script src="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script> <script src="//code.jquery.com/jquery-1.11.1.min.js"></script> <!------ Include the above in your HEAD tag ----------> <style> .delete {cursor: pointer;} .chosen-results li {font-size: 11px;} .table-produtos tbody tr td {font-size: 12px;} </style> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> </head> <body> <div class="container mt-3"> <div class="row"> <div class="col"> <div class="card"> <div class="card-header"> Lançamento de Produtos </div> <div class="card-block"> <form class="form-inline"> <select class="form-control" id="nmProduto" style="max-width: 300px;"> <option value="">Entre com o Codigo de Barras</option> </select> <label class="sr-only" for="inlineFormInput">Quantidade</label> <input type="text" class="form-control mb-2 mr-sm-2 mb-sm-0 ml-sm-2" id="qtProduto" placeholder="Quant" style="width:70px"> <label class="sr-only" for="inlineFormInput">Valor</label> <input type="text" class="form-control mb-2 mr-sm-2 mb-sm-0" id="vlProduto" placeholder="Valor (R$)" style="width:98px"> <button type="submit" class="btn btn-primary" id="btnAdicionarProduto">+</button> <p class="text-danger ml-3 pt-2 invisible" id="msgValidaForm">Favor preencher <strong>todos os campos</strong> do produto!</p> </form> <table class="table table-sm table-striped mt-3 table-produtos"> <thead> <tr> <th style="max-width: 600px;">Produto</th> <th>Quantidade</th> <th class="text-right pr-5">Valor (R$)</th> <th class="text-right pr-5 vlTotalProduto">Total</th> <th>Ação</th> </tr> </thead> <tbody> </tbody> <tfoot class="invisible"> <tr> <th></th> <th></th> <th class="text-right">SubTotal ❯</th> <th class="text-right pr-5" id="vlTotalPedido"></th> <th></th> </tr> </tfoot> </table> </div> </div> </div> </div> </div> <script> $("document").ready(function(){ /* Produto recebe o foco ao chamar o sistema */ $("#nmProduto").chosen().trigger('chosen:activate'); /* Quando o produto for selecionado, a quantidade recebe o foco */ $("#nmProduto").change(function(){ $("#qtProduto").focus(); }) /* Adiciona a máscara ao input do valor do produto ( plugin mask utilizado ) */ $('#vlProduto').mask("00000.00",{reverse: true}); /* Adiciona a máscara ao input de quantidade do produto ( plugin mask utilizado ) */ $('#qtProduto').mask("00000",{reverse: true}); $("#btnAdicionarProduto").on('click', function($e){ /* Evita que o evento ocorra */ $e.preventDefault(); /* Adiciona os produtos somente se o formulário for preenchido */ if(validaForm()) { /* Declarando a variável tb */ var tb; /* preenchendo informações na variável tb para inserção no tbody da tabela */ tb = "<tr><td>" + $("#nmProduto").val() + "</td>" + "<td>" + $("#qtProduto").val() + "</td>" + "<td class=\"text-right pr-5\">" + ($("#vlProduto").val() * 1).toFixed(2) + "</td>" + "<td class=\"text-right pr-5\">" + ( $("#vlProduto").val() * $("#qtProduto").val() ).toFixed(2) + "</td>" + "<td><button class=\"btn btn-light btn-sm delete text-danger\">✖</button></td></tr>"; /* Adiciona a variável tb acima que contém os dados do produto no tbody da tabela. Estas informações são inseridas no final do tbody */ $("tbody").append(tb); /* Após inserção da linha do produto, os valores do pedido são atualizados */ atualizaVlPedido(); /* Se existir mais que 1 item no pedido, é removido a classe invisible do foot da tabela, mostrando assim o valor total do pedido */ if($(".table-produtos tbody tr").length > 0) $(".table-produtos tfoot").removeClass("invisible"); /* As 3 linhas abaixo redefinem os campos de entrada do produto para deixando-os vazios*/ $("#nmProduto").val('').trigger("chosen:updated"); $("#vlProduto").val(''); $("#qtProduto").val(''); /* Define o foco para a seleção de produtos */ $("#nmProduto").chosen().trigger('chosen:activate'); } }) /* Ao clicar na ação delete remove a linha dinamicamente da tabela */ $(document).on("click",".delete",function() { /* Remove a linha referente ao produto clicado */ $(this).parent().parent().remove(); /* Se existir somente um produto no pedido, e for removido, o foot da tabela fica invisível O foot é usado para mostrar o valor total do pedido */ if($(".table-produtos tbody tr").length === 0) $(".table-produtos tfoot").addClass("invisible"); /* Após exclusão da linha, os valores do pedido são atualizados */ atualizaVlPedido(); }) /* Validação do Formulário */ function validaForm() { var formValid = true; if($("#nmProduto").val() === "") formValid = false; if($("#vlProduto").val() === "") formValid = false; if($("#qtProduto").val() === "") formValid = false; if(!formValid) { /* Remove a classe invisible do elemento msgValidaForm */ $("#msgValidaForm").removeClass("invisible") /* Após 4 segundo a mensagem desaparece com a classe invisible sendo novamente adicionada */ setTimeout(function(){ $("#msgValidaForm").addClass("invisible") }, 4000); return false; } else return true; } /* Atualiza Valor Total do Pedido */ function atualizaVlPedido() { /* Define o valor do pedido */ var vlTotalPedido = 0; /* Varre todos os valores dos produtos da tabela */ $(".table-produtos tbody tr td:nth-child(4)").each(function() { vlTotalPedido += parseFloat($(this).text()); }) /* Atualiza o valor do pedido na tabela */ $("#vlTotalPedido").text(vlTotalPedido.toFixed(2)); } }) </script> <script src="assets/jquery/jquery-3.2.1.min.js" crossorigin="anonymous"></script> <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/chosen/1.8.2/chosen.jquery.js" type="text/javascript"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.11/jquery.mask.js" type="text/javascript"></script> </body> <a href="index.html" button type="button" class="btn btn-success">Voltar</button></a><br> </html>  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.