Design: Tipo decimal/dinheiro

Criado em 6 ago. 2017  ·  3Comentários  ·  Fonte: WebAssembly/design

Existem muitos bons documentos WASM sobre o tipo Float e sua aritmética com parte fracionária sendo (2-based)^(-1).

Por anos, os programadores têm usado alternativas em JavaScript para obter o cálculo adequado da fração decimal devido ao único tipo flutuante de 64 bits para todos os números.
Existe um plano para suportar o tipo __Money__ ou o tipo __Decimal__ ( Exemplo 1 , Exemplo 2 )?

O tipo praticamente decimal é importante para a maioria dos aplicativos de negócios. Muitos idiomas, plataformas e bancos de dados o suportam.

Comentários muito úteis

Não acho que o OP esteja solicitando suporte a BCD, mas sim suporte a ponto flutuante decimal . Fora isso, concordo com @jfbastien , devemos ter cuidado com o suporte a algo que não está disponível com frequência em hardware. De acordo com a página da Wikipedia que citei, apenas o hardware da IBM até agora o implementa. ISTR havia rumores sobre a Intel perseguindo isso, mas nada parece ter se materializado.

A Intel parece oferecer uma biblioteca de emulação que se afirma ser portátil, portanto, presumivelmente C que poderia ser compilada para o Wasm. Eu não olhei para isso, nem mesmo para verificar se minha presunção está correta.

Todos 3 comentários

O WebAssembly expõe recursos de hardware comuns quando esses recursos tornam os casos de uso mais rápidos. Em geral, não expõe mais nada: espera-se que recursos úteis sejam construídos usando essas primitivas.

Portanto, avaliaríamos o decimal codificado em binário da seguinte forma:

  • Está amplamente disponível em ISAs modernas? Não. Ele estava no antigo x86 e não está disponível no modo longo.
  • É mais rápido? Pode-se argumentar que, às vezes, ter a intenção expressa (por exemplo, "executar adição de BCD") pode levar a um código melhor porque a intenção é perdida e o compilador não pode recuperá-la. Esse não é claramente o caso aqui, mas estou disposto a ser convencido do contrário.

Observe que a utilidade de um recurso simplesmente não é relevante para isso. Se for útil, uma biblioteca pode ser construída (ou melhor, alguma base de código C++ pode ser compilada para WebAssembly). A utilidade e a presença de um campeão para o recurso apenas influenciam quando chegaremos a ele.

Não acho que o OP esteja solicitando suporte a BCD, mas sim suporte a ponto flutuante decimal . Fora isso, concordo com @jfbastien , devemos ter cuidado com o suporte a algo que não está disponível com frequência em hardware. De acordo com a página da Wikipedia que citei, apenas o hardware da IBM até agora o implementa. ISTR havia rumores sobre a Intel perseguindo isso, mas nada parece ter se materializado.

A Intel parece oferecer uma biblioteca de emulação que se afirma ser portátil, portanto, presumivelmente C que poderia ser compilada para o Wasm. Eu não olhei para isso, nem mesmo para verificar se minha presunção está correta.

Tank você @jfbastien e @lars-t-hansen pelas respostas.

Agora está claro que este problema não está relacionado ao WASM e deve ser endereçado a outro grupo.

Uma biblioteca pode resolver esse problema.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

JimmyVV picture JimmyVV  ·  4Comentários

aaabbbcccddd00001111 picture aaabbbcccddd00001111  ·  3Comentários

void4 picture void4  ·  5Comentários

beriberikix picture beriberikix  ·  7Comentários

jfbastien picture jfbastien  ·  6Comentários