Alguém conhece uma biblioteca para trabalhar com pares quantidade/unidade de medida?

StackOverflow https://stackoverflow.com/questions/54043

  •  09-06-2019
  •  | 
  •  

Pergunta

Eu gostaria de poder fazer coisas como

var m1 = new UnitOfMeasureQuantityPair(123.00, UnitOfMeasure.Pounds);
var m2 = new UnitOfMeasureQuantityPair(123.00, UnitOfMeasure.Liters);

m1.ToKilograms();
m2.ToPounds(new Density(7.0, DensityType.PoundsPerGallon);

Se ainda não existe algo assim, alguém interessado em fazer isso como um projeto de sistema operacional?

Foi útil?

Solução

Confira a Biblioteca de conversão de unidades de medida no Projeto Código.

Outras dicas

Na verdade, construímos um internamente onde trabalho.Infelizmente, não está disponível ao público.

Na verdade, este é um ótimo projeto para trabalhar e não é tão difícil de fazer.Se você planeja fazer algo sozinho, sugiro que leia sobre Quantidade, Dimensão e Unidade (unidades fundamentais).

Isso nos ajudou a entender claramente o domínio do problema e ajudou muito no projeto da biblioteca.

Em Capítulo 10.Padrão de arquétipo de quantidade do livro Padrões Empresariais e MDA:Construindo Software Melhor com Padrões de Arquétipo e UML Por Jim Arlow e Ila Neustadt Há uma discussão realmente útil sobre esse tópico e alguns padrões gerais que você pode usar como guia.

Veja também a versão mais recente do F# - ela possui análise estática de domínio/dimensão de medição.

Existe um artigo (antigo) sobre CódigoProjeto.Eu usei isso em um ambiente de produção anteriormente e funcionou muito bem.Tivemos alguns pequenos problemas (desempenho, entre outros), que resolvi.Eu coloquei tudo isso em uma biblioteca que você pode encontrar aqui.

Isenção de responsabilidade: Eu sou o mantenedor deste projeto, então isso pode ser concebido como um plug descarado.A biblioteca é gratuita (como na cerveja e na fala).

Inclui as unidades SI, mas também permite a criação de novas unidades e conversões.

Assim você pode por exemplo criar uma unidade “XP” (pontos de experiência).Você pode então registrar uma conversão para "m" (metro, não faz sentido, mas dá para fazer).Você também pode criar uma quantia como 3 XP/min (3 pontos de experiência por minuto).Acredito que oferece padrões decentes, ao mesmo tempo que permite flexibilidade.

Unix unidades é muito brilhante;a fonte deve estar em algum lugar na web.
(Em "bugs", o documento original dizia "não baseie seus planos financeiros nas conversões de moeda".)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top