Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the breadcrumb-navxt domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/devtools/public_html/blog/wp-includes/functions.php on line 6131

Deprecated: A função WP_Dependencies->add_data() foi chamada com um argumento que está obsoleto desde a versão 6.9.0! Os comentários condicionais do IE são ignorados por todos os navegadores compatíveis. in /home/devtools/public_html/blog/wp-includes/functions.php on line 6131
Como armazenar informações do tipo Moeda

Como armazenar informações do tipo Moeda

Constantemente vejo alguns colegas (novatos em sua maioria) questionando em fóruns qual o tipo de dados deve ser utilizado para armazenar valores.

A resposta é simples, mas pode variar de banco de dados para banco de dados.

Em sua maioria, o mais utilizado é o Decimal, pois podemos especificar a quantidade de casas decimais queremos trabalhar.

Decimal(length,precision)

Vejamos um exemplo:

 decimal(7,2) 

Neste campo poderemos armazenar valores na casa de milhões, afinal ele aceitará 7 inteiros e dois decimais.

A opção decimal pode ser utilizada facilmente no MySQL e no PostgreSQL, já no SQL Server, além do Decimal, temos o Money, que também armazena informações do tipo moeda.

No Oracle, temos o Number(p,s), que tem o mesmo proposito do Decimal.

Uma curiosidade no MySQL é que, o banco armazena as informações como string ao invés de um número de ponto-flutuante binário, isto para preservar a precisão decimal destes valores.

Uma característica forte para o uso do Decimal é que, tipos como FLOAT ou DOUBLE não retornam precisão em seus resultados, vejamos um exemplo:

 delimiter $  
 CREATE TABLE `trabalhando_com_valores` (  
  `id` bigint(20) NOT NULL AUTO_INCREMENT,  
  `valor` double DEFAULT NULL,  
  `valor_2` double DEFAULT NULL,  
  PRIMARY KEY (`id`)  
 ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8$  
 Insert Into trabalhando_com_valores(valor,valor_2)  
 Values(10.52,8.73)  

De posse dos registros, façamos uma simples subtração:

 Select (valor - valor_2) as result   
 From trabalhando_com_valores  
 result   
 1.7899999999999991  

Logo, se precisar de valores precisos, evite o uso destes tipos de dados.

Um abraço e até a próxima.

5 comentários em “Como armazenar informações do tipo Moeda”

Deixe um comentário