Portal SAMP
[Ajuda] Porcentagem - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Porcentagem (/showthread.php?tid=1775)



Porcentagem - Levi.M - 27/10/2021

Pessoal, estou tendo um problema um tanto quanto peculiar, tenho um sistema de venda e nela vendo o valor a 90% do valor comprado. Só que testei e percebi que o sistema ao invés de me da o valor correto está me dando um valor muito diferente, por exemplo: Comprei uma casa a $26.500.000 se correto o valor de 90% seria 23.850.000, mais está me dando um valor muito diferente que seria $-19.099.673. Se alguém puder ajudar, agradeço, lembrando que consigo vender pelo preço total de 100% mais a 90% dá isso.

Código PHP:
ValoresVenda[playerid] = (CasaInfo[PlayerPert[17][playerid]][cPrecoFixo]*90)/100



RE: Porcentagem - ipsLuan - 27/10/2021

Código PHP:
PegarPorcentagem(string1string2) { return (string2 string1) / 100; } 

Código PHP:
new preco PegarPorcentagem(20100); 

Com o código, a variável preco irá receber 20% de 100.


RE: Porcentagem - xbruno1000x - 28/10/2021

Boa noite Levi,

Seu problema ocorre pois essas porcentagens devem retornar valores dentro do conjunto numérico dos números reais, enquanto as variáveis padrão apenas suportam o conjunto dos inteiros.

Use a função floatround para converter para número inteiro
Código:
floatround(CasaInfo[PlayerPert[17][playerid]][cPrecoFixo]*90/100, floatround_ceil);

Também não há necessidade do uso de parêntesis pois nesse caso o calculo será feito da esquerda para direita de qualquer forma.


RE: Porcentagem - Levi.M - 28/10/2021

Fiz um teste e todos os valores estão dando -.
Código PHP:
new precoteste 25000000;
    new 
ValoresVenda = (precoteste*90)/100;
    new 
preco PegarPorcentagem(90100); 
    new 
teste precoteste*10-preco;
    new 
valor = (teste*10)/100;

    
printf("$%d",ValoresVenda);
    
printf("$%d",ValoresVenda);
    
printf("$%d",precoteste*preco/100);
    
printf("$%d",valor);
    
printf("$%d",floatround((precoteste*90)/10.0));
       
printf("$%d",floatround(precoteste*90/100floatround_ceil));

$-
20449673
$-20449673
$-20449673
$-17949682
$-204496736
$-20449672 

Resolvido. Deu certo assim:
Código PHP:
#define PegarPorcentagem(%0,%1) floatmul(floatdiv(%0, 100.0), %1)

printf("$%d",floatround(PegarPorcentagem(9025000000)));